通知其他偏好活动已更改

时间:2012-12-14 16:40:33

标签: java android

我正在尝试将主要活动通知PreferenceActivity中的首选项更改,但是当我更改首选项时,onSharedPreferenceChanged没有触发。

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
    prefs.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener()
    {   
        public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
        {
            Log.d("Dict", "PreferenceChanged: " + key);
        }
    });

2 个答案:

答案 0 :(得分:6)

我的猜测是(因为这是一个常见的错误)您正在onResume()注册监听器并在onPause()中取消注册。这将阻止听众发射。如果这是正在发生的事情,将代码更改为在onCreate()期间注册并在onDestroy()期间取消注册将解决问题。

答案 1 :(得分:2)

您可以使用此代码 根据密钥

找出Preference当前值的变化

公共类SharedPreferences实现         OnSharedPreferenceChangeListener {

@Override
public void onSharedPreferenceChanged(
        android.content.SharedPreferences sharedPreferences, String key) {
    // TODO Auto-generated method stub

    sharedPreferences.getBoolean(key, defValue);
    sharedPreferences.getFloat(key,defValue);
    sharedPreferences.getInt(key, defValue);
    sharedPreferences.getString(key, defValue);
    sharedPreferences.getString(key, defValue);
}

}