CheckBoxPreference - метод onSharedPreferenceChanged не вызывается

1

У меня есть пара настроек 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 метод onSharedPreferenceChanged никогда не вызван?

  • 0
    Очень ценится! Я почти подозревал это с вашей помощью :) Я не уверен, как изменить значение MainClass.BooleanVariable ... У меня есть: MainClass.BooleanVariable = P.isEnabled(); но это, кажется, всегда позволяет? о_О
Теги:
sharedpreferences
checkboxpreference

2 ответа

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;
        }
    });
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 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню