我正在使用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版本进行测试。
有人知道解决此问题的任何方法