java - SwitchPreference 的图形没有变化
问题描述
SwitchPreference switchPreference = new SwitchPreference(preferenceScreen.getContext());
switchPreference.setKey(sensor.getName());
switchPreference.setTitle(sensor.getName());
switchPreference.setChecked(true);
如果我检查开关的状态
switchPreference.isChecked()
它返回正确的布尔值作为真。但是,开关的图形始终处于上次运行时设置的状态。
开关在 onCreate() 中动态创建
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences); //almost empty
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
prefs.registerOnSharedPreferenceChangeListener(this);
PreferenceScreen preferenceScreen = this.getPreferenceScreen();
PreferenceCategory preferenceCategory = new PreferenceCategory(preferenceScreen.getContext());
preferenceCategory.setTitle("Sensor List");
preferenceScreen.addPreference(preferenceCategory);
for (TrackingData sensor : SensorService.data)
{
SwitchPreference switchPreference = new SwitchPreference(preferenceScreen.getContext());
switchPreference.setKey(sensor.getName());
switchPreference.setTitle(sensor.getName());
switchPreference.setChecked(true);
Log.d(TAG_SENSOR,switchPreference.getKey() + "'s status is " + switchPreference.isChecked());
preferenceCategory.addPreference(switchPreference);
}
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
SwitchPreference preference = (SwitchPreference) findPreference(key);
boolean value = preference.isChecked();
if (value)
{
//start tracking this sensor
Log.d(TAG_SENSOR, key + " tracking enabled");
}
else
{
//stop tracking this sensor
Log.d(TAG_SENSOR, key + "tracking disabled");
}
}
解决方案
经过一番修补,我发现解决方法是将 SwitchPreference 的持久值设置为 false
推荐阅读
- reactjs - React TypeScript:如何使用变量名作为键的一部分
- git - 有没有办法将分支重置为 master 但保留提交历史记录?
- python - 列表元素的公平划分
- sql-server-2017 - SQL 作业未运行。错误:无法获取有关 Windows NT 组/用户“域\用户名”的信息,错误代码 0x2
- database-design - 在数据库中存储选择冲突/需求的良好架构是什么?
- javascript - 响应标头为空
- python - 如何附加到现有的 csv 字典或使用 python csv 添加行?
- java - 在 Java / Hibernate 中将 @Formula 与集合一起使用
- javascript - 如何从Javascript中的数组中删除带有空字符串的对象?
- wordpress - (更新)使用 WPML 获取第二语言的 WooCommerce 类别