[英]Could not listen to preference changes?
class UserViewModel extends ViewModel{
appPrefs.registerOnSharedPreferenceChangeListener(preferenceChangeListener)
}}
private SharedPreferences.OnSharedPreferenceChangeListener preferenceChangeListener;
public void subscribe() {
preferenceChangeListener = (sharedPreferences, key) -> {
}
};
appPrefs.registerOnSharedPreferenceChangeListener(preferenceChangeListener);
};
public void unsubscribe(){
appPrefs.unregisterOnSharedPreferenceChangeListener(preferenceChangeListener);
}
subscribe()
和unsubscribe()
從Fragment onAttach()
和onDetach()
方法調用,但在屬性狀態更改時不起作用。 正如您所看到的,preferenceChangeListener是類成員而不是方法屬性。 在另一個片段中更改了preference的值,當我導航到另一個片段並返回preferenceChangeListener為null時,它在onAttach()中再次初始化,我看到原因,但我不知道如何克服。
我建議在片段onResume()
registerOnSharedPreferenceChangeListener()
期間registerOnSharedPreferenceChangeListener()
onResume()
,在onPause()
處unregisterOnSharedPreferenceChangeListener()
onPause()
。 還要檢查首選項名稱的內容。 這可能是一個錯字。
`
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals(KEY_PREF_SYNC_CONN)) {
Preference connectionPref = findPreference(key);
// Set summary to be the user-description for the selected value
connectionPref.setSummary(sharedPreferences.getString(key, ""));
}
}
`官方文檔可以在這里找到: https : //developer.android.com/guide/topics/ui/settings.html#Fragment
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.