У меня есть пара настроек 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
никогда не вызван?
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;
}
});
Вот 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
}
});
MainClass.BooleanVariable
... У меня есть:MainClass.BooleanVariable = P.isEnabled();
но это, кажется, всегда позволяет? о_О