OnPreferenceChangeListener для каждой настройки

Я знаю, что могу сделать что-то вроде этого:

Preference pref = findPreference(getString(R.string.pref_vibrate_on_key)); pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { LogUtil.d("Working!"); return true; } }); 

Но я хотел бы добавить слушателя к каждому предпочтению. Я пробовал делать:

 SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context); sp.registerOnSharedPreferenceChangeListener(new OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged( SharedPreferences sharedPreferences, String key) { LogUtil.d("working!"); } }); 

Но это не сработает. Это возможно? Если да, то что я делаю неправильно?

Предполагая, что вы хотите, чтобы один и тот же прослушиватель вызывался каждый раз, это могло бы быть более простым решением:

 Preference.OnPreferenceChangeListener changeListener = new Preference.OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference preference, Object newValue) { // Code goes here return true; } }; EditTextPreference pref = (EditTextPreference)findPreference(getString(R.string.pref1)); pref1.setOnPreferenceChangeListener(changeListener); EditTextPreference pref2 = (EditTextPreference)findPreference(getString(R.string.pref2)); pref2.setOnPreferenceChangeListener(changeListener); 

Я думаю, что onSharedPrefererenceChanged запускается при сохранении предпочтений (когда вы нажимаете BACK или HOME в PreferenceActivity ). Я думаю, что самый простой способ – создать единый класс, реализующий OnPreferenceChangeListener и переключиться через Preference.getKey(); И установите его как OnPreferenceChangeListener для каждого Предпочтения.

Intereting Posts
Лучшие методы для запроса базы данных SQLite в ListFragment с помощью CursorLoader? Результаты запроса sqlite для сортировки Android игнорируются Приложение показывает ошибку на новом устройстве (леденец), но отлично работает на моем старом устройстве (kitkat) Вызов функции DialogFragment show () изнутри onRequestPermissionsResult () вызывает исключение IllegalStateException в Marshmallow PreferenceFragment поддерживает все проблемы API Как эмулировать выгрузку фонового приложения на ОС Android? Я получаю только app-release-unaligned.apk, когда я нажимаю сгенерировать подписанный apk RemoteViews setLayoutParams? Чтобы получить дату и время с Timestamp Android В API com.google.android.gms.wallet отсутствует файл CreateWalletObjectsRequest К сожалению, Launcher3 перестала работать с ошибкой в ​​андроид-студии? OnItemClickListener не запускается в Android GridView Android – рисование лабиринта на холсте с плавным движением символов Масштабирование проблемы на Android – почему картина такая неуклюжая? Неверный стиль флажка в списке