4

我试图让主要活动通知 PreferenceActivity 中的首选项发生变化,但是当我更改首选项时 onSharedPreferenceChanged 没有触发。

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

2 回答 2

6

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

于 2012-12-14T18:00:30.380 回答
2

您可以使用此代码查找根据他的键更改的偏好当前值

公共类 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);
}

}

于 2012-12-14T16:51:54.227 回答