【发布时间】:2013-10-18 18:33:22
【问题描述】:
我正在开发一个 PreferenceActivity,我可以在其中根据一些动态内容添加 CheckBoxPreference 实例。我还维护活动中检查的首选项的计数。当我第一次加载应用程序时,一切都很好。但是当我选择一些 2-3 个复选框并在模拟器上再次部署应用程序代码时,当我返回相同的活动时,之前选择的复选框仍然处于选中状态。当我在同一个应用程序中进出某些活动时,也会发生同样的情况!
为了防止这种情况,每次创建 CheckBoxPreference 的实例时,我都会显式调用.setChecked(false)!!!但是那些之前检查过的首选项仍然只检查!
我无法理解这种行为!它是否会从缓存中检查这些值!但是我明确调用.setChecked(false),那又如何呢?
非常感谢,
科坦
编辑:这是我的代码:
String content = null;
for (String title : titles) {
checkBoxPref = new CheckBoxPreference(this);
checkBoxPref.setKey(title);
checkBoxPref.setTitle(title);
<b>checkBoxPref.setDefaultValue(Boolean.FALSE); //Line # 1 set default to false
checkBoxPref.setChecked(false);//Line # 2 set checked = false </b>
content = config.getString(title, "Yet to define!");
if (content.length() > 30) {
content = content.substring(0, 30);
}
checkBoxPref.setSummary(content);
checkBoxPref.setOnPreferenceChangeListener(new MyCheckBoxChangeListener());
checkBoxPreferenceList.add(checkBoxPref);
inlinePrefCat.addPreference(checkBoxPref);
}
每当我的应用程序返回此活动时,都会执行此代码!但是在离开此活动之前,我仍然检查了 2-3 个复选框,当应用返回此状态时,它们将保持相同的状态!请看一下代码,我已经明确设置了 setChecked(false),但仍然无法取消选中它们!
请提出一些解决方案!我被卡住了!
【问题讨论】:
-
在导航到其他活动时,您是否调用了 Preferences Activity 的
finish(...)方法? -
谢谢...是的,根据您的建议,我尝试了这个,finish(),同时退出这个活动!结果还是一样而已。
标签: android caching checkboxpreference