我正在开发一个首选项活动,我可以根据一些动态内容添加CheckBox首选项实例。我还保留了活动中检查的首选项的计数。当我第一次加载应用程序时,一切都很好。但是,当我选中一些 2-3 个复选框并在模拟器上再次部署应用程序代码时,当我返回到相同的活动时,以前选择的复选框将保持选中状态。当我在同一应用程序中的某些活动中来回移动时,也会发生同样的情况!
为了防止这种情况,每次创建 CheckBoxPreferred 的实例时,我都会显式调用 .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),但仍然无法取消选中它们!
请提出一些解决方案!我被困住了!
您可能需要发布一些代码才能获得更好的答案。 当我在适配器中放置复选框时,我遇到了同样的问题。 我通过使用onClickListener处理复选框来解决此问题:
CheckBox menuOption = (CheckBox) v.findViewById(R.id.list_checkbox);
menuOption.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
CompoundButton cb = (CompoundButton) v;
// code to set preference goes here
// can check if true or false with cb.isChecked()
}});