0

私はアプリケーションを開発しています。1 ページに多数のチェックボックスがあります。ページを終了するときに 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();
    }

});

このページを離れると、また戻ってきます。デフォルトでは、すべてのチェックボックスの状態が非選択になります。なぜ?

4

2 に答える 2

2

あなたは値を保存していますが、アクティビティが次のように開始された場合、値を復元する必要があります:

SharedPreferences prefs = getSharedPreferences("syllabus", 0);
checkbox1.setChecked(prefs.getBoolean("cbx1_ischecked" ,false));
checkbox2.setChecked(prefs.getBoolean("cbx2_ischecked" ,false));
于 2012-11-26T09:14:14.993 に答える
0

これを試して

 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));
于 2012-11-26T10:11:31.343 に答える