设置为null后调用OnPreferenceChange

时间:2018-12-11 18:45:29

标签: android sharedpreferences preferencefragment

我正在使用PreferenceFragment来配置一些共享的首选项。

在某些时候,当用户按下“加载最佳设置”按钮时,我将一些SharedPreferences设置为最佳值...但众所周知,更改共享首选项不会更改屏幕上的组件,因此我需要重新加载片段以便让用户看到更改。

我尝试了几种重新加载片段的方法,但是它们都与我的逻辑有关,因此,由于我的大多数组件都是开关,所以我决定手动将on / off设置为

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

这是如何完成的示例代码。

尽管我在更改首选项之前将ChangeListener设置为null,但它的onPreferenceChange方法仍被称为ANDROID的某些版本,这使我的程序按下了按钮两次并导致不希望的状态

我测试了android 16和27
onPreferenceChange上的16被错误地称为
在27岁时表现良好

我不知道哪个版本是此行为的起点,并且我没有足够的android版本进行测试。

有人知道解决此问题的任何方法

0 个答案:

没有答案