android - 清除CheckBoxPreference的缓存

时间:2013-10-18 18:33:23

标签: android caching checkboxpreference

我正在开发一个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),但仍然无法取消选中它们!

请建议一些解决方案!我被卡住了!

1 个答案:

答案 0 :(得分:0)

您可能需要发布一些代码才能获得更好的答案。当我在我的适配器中有我的复选框时,我遇到了同样的问题。我通过使用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()
    }});