CheckBoxPreference - 未调用onSharedPreferenceChanged方法

时间:2011-12-04 03:52:49

标签: java android sharedpreferences checkboxpreference

我设置了几个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方法永远不会被调用?

2 个答案:

答案 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;
        }
    });