繁体   English   中英

无法听取偏好变化?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM