我正在尝试将主要活动通知PreferenceActivity中的首选项更改,但是当我更改首选项时,onSharedPreferenceChanged没有触发。
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener()
{
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
Log.d("Dict", "PreferenceChanged: " + key);
}
});
答案 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);
}
}