当前位置:编程学习 > wap >>

Android中无法保存CheckBox的状态

我在做一个应用,其中一个界面有很多CheckBox,我想在退出界面之后可以保存CheckBox的状态,我用的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();
    }
           
});
====
但是当我离开这个界面再次回来之后,所有的CheckBox的状态又都会变为默认全部未选中的状态。这是为什么啊? --------------------编程问答-------------------- 加log,看看在退出界面时isChecked的值是true还是false。
在重新进来时,把cbx1_ischecked保存的值也打印出来看看就知道了,或者debug一下也可以。 --------------------编程问答-------------------- 离开这个界面再次回来之后,所有的CheckBox的状态又都会变为默认全部未选中的状态,这是肯定的,你回到这个界面还要读取SharedPreferrences啊,根据相应的值去setCheckbox的状态 --------------------编程问答-------------------- onCreate的时候对每个checkbox设置setChecked,根据你从sharedpreference中读取的值进行设置 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 在onCreate中读取sharedpreference中设置的值,根据这个值checkbox设置setChecked --------------------编程问答-------------------- 估计是没读取sharedpreference --------------------编程问答-------------------- 你要手动进入cbx1_ischecked然后进行设置,不然不会给你自动获取cbx1_ischecked值。

在getSharedPreferences放完数据后,要在oncreate中初始化checkboz数据的状态,代码如下:

/ onCreate

SharedPreferences settings = getSharedPreferences("syllabus", 0);
Boolean isChecked = settings.getBoolean("cbx1_ischecked", false);
checkbox1.setChecked(isChecked );
--------------------编程问答-------------------- 试一下这个方法:
boolean check1,check2;
 checkbox1.setOnCheckedChangeListener(new OnCheckedChangeListener(){
 public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
 // TODO Auto-generated method stub
  check1=isChecked;

 }
});

checkbox2.setOnCheckedChangeListener(new OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
// TODO Auto-generated method stub
 check2=isChecked;

}

}); 

//store boolean only once when you leave the activity
 Editor editor = getSharedPreferences("syllabus", 0).edit();
 editor.putBoolean("cbx1_ischecked", check1);
 editor.putBoolean("cbx2_ischecked", check2);
 editor.commit();


 In onCreate()

  SharedPreferences prefs = getSharedPreferences("syllabus", 0);
  checkbox1.setChecked(prefs.getBoolean("cbx1_ischecked" ,false));
  checkbox2.setChecked(prefs.getBoolean("cbx2_ischecked" ,false));
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,