onShared preferenceChanged不会触发所有的时间 [英] onSharedPreferenceChanged not fired all the time

查看:526
本文介绍了onShared preferenceChanged不会触发所有的时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个奇怪的问题,用这种方法。这就是所谓的,当我编辑的EditText preference,只有当我改变的价值,并在MultiSelectList preference仅在第一次我改变。 这是我的片段code。

I have a weird problem with this method. It's called, when i edit a EditTextPreference, only when i change the value, and on a MultiSelectListPreference only the first time i change. This is my fragment code.

public class PrefFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRetainInstance(true);
        addPreferencesFromResource(R.xml.my_preferences);
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
        // DO STUFF
    }

    @Override
    public boolean onPreferenceTreeClick(final PreferenceScreen preferenceScreen, final Preference preference) {
        // TODO Auto-generated method stub
        super.onPreferenceTreeClick(preferenceScreen, preference);
        // DO STUFF

    }

    @Override
    public void onResume() {
        super.onResume();
        // Set up a listener whenever a key changes
        getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
    }

    @Override
    public void onPause() {
        super.onPause();
        // Unregister the listener whenever a key changes
        getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
    }
}

这是MY_ preferences.xml文件

and this is my_preferences.xml file


推荐答案

移动 unregisterOnShared preferenceChangeListener 的onPause()的onStop()

这篇关于onShared preferenceChanged不会触发所有的时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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