Как сохранять значение нескольких CheckBox?
@Override public void onPause() {
super.onPause();
save(mCheckBox.isChecked());
save(mCheckBox2.isChecked());
}
@Override public void onResume() {
super.onResume(); mCheckBox.setChecked(load());
super.onResume(); mCheckBox2.setChecked(load());
}
private void save(final boolean isChecked) {
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("check", isChecked); editor.commit();
}
private boolean load() {
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
return sharedPreferences.getBoolean("check", false);
}
}
Ответы (1 шт):
Автор решения: Вася Воронцов
→ Ссылка
Раз уж это всё происходит в Activity, то не надо инициализировать SharedPreferences и Editor и присваивать им значение каждый раз.
SharedPreferences prefer;
Editor edit;
CheckBox checkBox, checkBox2;
void save(String checkBoxName, boolean isChecked) {
editor.putBoolean(checkBoxName, isChecked);
editor.apply();
};
boolean load(String checkBoxName) {
return prefer.getBoolean(checkBoxName, false);
};
@Override
protected void onPause() {
super.onPause();
save("checkBox", checkBox.isChecked());
save("checkBox2", checkBox2.isChecked());
};
@Override
protected void onResume() {
super.onResume();
checkBox.setChecked(load("checkBox"));
checkBox2.setChecked(load("checkBox2"));
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
prefer = getSharedPreferences("STOR_NAME", Context.MODE_PRIVATE);
editor = prefer.edit();
};
Дело в том, что необходимо уточнять, какое именно вы хотите сохранить значение. Вы дважды использовали один и тот же метод, в котором клали два разных (для вас) значения под одним именем. Разумеется, в этом случае второе значение просто заменяет собой первое, и никакое другое значение таким образом получить невозможно.