所以我最近对我的应用程序做了一个小更新,旧 API(等于较低的 23)的用户抱怨 PreferenceSwitch 适用于逻辑,但没有明显的迹象表明它已被切换。超过 24 的 API 工作正常。
即使我预设了开关并重新加载片段,开关也没有明显设置。
我想修复这个问题,但我不知道为什么会出现这个错误。
我正在使用 takisoft preferencex 和 com.takisoft.preferencex.PreferenceFragmentCompat 但是快速更改为官方版本没有用,同样的行为
我在网上和 github 上搜索,但我找不到解决方案。
编辑:我刚刚在运行 API 23 的模拟器上安装了我的旧版本,但开关仍然无法正常工作。
我的代码的一小部分:
vib.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (vibrate) {
SharedPreferences.Editor editor = sharedPref.edit();
editor.putBoolean("vibrate", false);
editor.commit();
editor.apply();
vibrate = sharedPref.getBoolean("vibrate", false);
vib.setChecked(vibrate);
} else {
SharedPreferences.Editor editor = sharedPref.edit();
editor.putBoolean("vibrate", true);
editor.commit();
editor.apply();
vibrate = sharedPref.getBoolean("vibrate", false);
vib.setChecked(vibrate);
}
return false;
}
});