我设置了几个CheckBoxPreferences
,我的偏好类扩展了PreferenceActivity
并实现了OnSharedPreferenceChangeListener
这就是我用来回复检查/取消选中CheckBoxPreferences
:
public void onSharedPreferenceChanged(SharedPreferences P, String K) {
if (K.equals(CheckBoxPref_KEY_HERE)) {
MyClass.BooleanVariable = P.getBoolean("CheckBoxPref_KEY_HERE", true);
}
}
据我所知,上面的onSharedPreferenceChanged
方法永远不会被调用?
答案 0 :(得分:1)
如果你想对所有偏好做点什么,这是soln:
创建一个类成员:
SharedPreferences settings;
你的onCreate方法中的:
settings = getSharedPreferences(<your_pref_name>, 0);
settings.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged (SharedPreferences sharedPreferences, String key) {
// Do whatever
}
});
答案 1 :(得分:0)
checkBoxPreference = (CheckBoxPreference) this.findPreference("CheckBoxPref_KEY_HERE");
checkBoxPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
// do your work here
return true;
}
});