0

在我的应用程序中,一个界面有一些复选框,我希望退出界面后,复选框应该保持状态。所以下次我进入它可以显示我上次做了什么。我曾经SharedPreferrences实现过这个。

checkbox1.setOnCheckedChangeListener(new OnCheckedChangeListener(){
    public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
// TODO Auto-generated method stub
Editor editor = getSharedPreferences("syllabus", 0).edit();
editor.putBoolean("cbx1_ischecked", isChecked);
editor.commit();
}
    });
checkbox2.setOnCheckedChangeListener(new OnCheckedChangeListener(){
    public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
    // TODO Auto-generated method stub
    Editor editor = getSharedPreferences("syllabus", 0).edit();
    editor.putBoolean("cbx2_ischecked", isChecked);
    editor.commit();
    }

});

但它不起作用。当我返回此页面时,所有复选框都显示“每个项目都未选中”的状态。

如何实现我想要的功能?

4

2 回答 2

3

在放置日期 getSharedPreferences 之后,您必须在 onCreate 中使用此数据初始化您的 checkboz 状态,如下所示

// onCreate

SharedPreferences settings = getSharedPreferences("syllabus", 0);
Boolean isChecked = settings.getBoolean("cbx1_ischecked", false);
checkbox1.setChecked(isChecked );
于 2012-11-26T08:10:59.437 回答
0

您的值保存到SharedPreferences,但这并不意味着它们会自动恢复到相应的复选框。正如@talhakosen 提到的,您需要在活动开始时阅读它们SharedPreferences并设置您的复选框。

此外,您不需要在每次更改时将值写入 SharedPreferences。当用户离开您的活动时存储它们就足够了,即在onStop()方法中。

于 2012-11-26T08:15:43.950 回答