Reputation: 25
In my app ,one interface has some checkBoxes,I wish after I exit the interface, the CheckBoxes should maintain the state.So next time I enter it can show what I have done last time.I have used SharedPreferrences
to achieve this.
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();
}
});
But it doesn't work. when I return to this page, All checkBox show state that "every item is unselected ".
How can I realize the function I wish?
Upvotes: 0
Views: 1997
Reputation: 12717
After put date getSharedPreferences, You have to initialize your checkboz state with this data in onCreate, like below
// onCreate
SharedPreferences settings = getSharedPreferences("syllabus", 0);
Boolean isChecked = settings.getBoolean("cbx1_ischecked", false);
checkbox1.setChecked(isChecked );
Upvotes: 3
Reputation: 10194
Your values are saved to SharedPreferences
, but that doesn't mean they are automatically restored to the corresponding checkboxes. You need to read them from SharedPreferences
and set your checkboxes when your activity starts, as @talhakosen mentioned.
Besides, you don't need to write your values to SharedPreferences every time they change. It would be enough to store them when user leaves your activity, i.e. in onStop()
method.
Upvotes: 0