听不到偏好的变化? [英] Could not listen to preference changes?

查看:57
本文介绍了听不到偏好的变化?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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 是类成员而不是方法属性.另一个片段中的首选项值发生了变化,当我导航到另一个片段并返回时,preferenceChangeListener 为 null 它在 onAttach() 中再次初始化,我看到了原因,但我不知道如何克服.

subscribe() and unsubscribe() are called from Fragment onAttach() and onDetach() methods ,but not working when the state of the property is changed. And as you can see preferenceChangeListener is class member not a method property. the value of preference is changed in another fragment, and when I'm navigating to another fragment and coming back preferenceChangeListener is null it initialized again in onAttach() ,I see the reason ,but I don't know how to overcome.

推荐答案

我推荐 registerOnSharedPreferenceChangeListener() 在片段 onResume()unregisterOnSharedPreferenceChangeListener()onPause() .还要检查 preference key 名称所观察到的内容.这可能是一个错字.

I recommend to registerOnSharedPreferenceChangeListener() during fragment onResume() and unregisterOnSharedPreferenceChangeListener() at onPause() . Also check the preference key name what is observed. It could be a typo there.

`

 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

` Official documentation could be found here: https://developer.android.com/guide/topics/ui/settings.html#Fragment

这篇关于听不到偏好的变化?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆