OnPreferenceChange вызывается после установки на ноль - PullRequest
0 голосов
/ 11 декабря 2018

Я использую PreferenceFragment для настройки некоторых общих предпочтений.

В определенный момент, когда пользователь нажимает кнопку «загрузить лучшие настройки», я устанавливаю некоторые SharedPreferences в значения optmal ...но, как все знают, изменение общих настроек не приводит к изменению компонентов на экране, поэтому мне нужно переопределить фрагмент, чтобы пользователь мог увидеть изменения.

Я пробовал несколько способов перезагрузить фрагмент, ноу всех них были проблемы с моей логикой, так как большинство моих компонентов являются переключателями, я решил вручную включить / выключить

  Preference preference = getPreferenceScreen().findPreference(pref);
  preference.setEnabled(true);
            preference.setOnPreferenceChangeListener(null);
            ((TwoStatePreference)preference).setChecked(true);
            preference.setOnPreferenceChangeListener(this);

, это пример кода того, как это делается.

Однако, несмотря на то, что я установил ChangeListener на null перед изменением предпочтения, его методы onPreferenceChange по-прежнему вызывались в НЕКОТОРЫХ ВЕРСИЯХ АНДРОИДА, что делает мою программу такой, что кнопка нажималась дважды и приводила к нежелательному состоянию

Я тестировал Android 16 и 27
на 16 onPreferenceChange ошибочно вызывается
на 27, у него все нормально

Я не знаю, какая версия молотитстарые версии этого поведения, и у меня недостаточно версий для Android, чтобы проверить его.

Кто-нибудь знает какой-либо способ решить эту проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...