[英]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.