簡體   English   中英

無法在Android中保存CheckBox的狀態

[英]Can not save the state of CheckBox in Android

我正在開發一個應用程序。 一頁中有許多復選框。 我想在退出頁面時保存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();
    }

});

當我離開這個頁面,然后再回來。 所有復選框狀態都不會被選為默認狀態。 為什么?

你正在保存vallues,但你必須恢復它們,你的活動開始如下:

SharedPreferences prefs = getSharedPreferences("syllabus", 0);
checkbox1.setChecked(prefs.getBoolean("cbx1_ischecked" ,false));
checkbox2.setChecked(prefs.getBoolean("cbx2_ischecked" ,false));

嘗試這個

 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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM