Сохранить несколько состояний флажков
Я использовал этот код, чтобы сохранить один флажок, когда пользователь вернется, но мне нужно иметь много флажков в приложении. Я уверен, что лучший способ не скопировать и вставить этот код, но, похоже, не могу найти, что это такое.
Что бы я добавил или изменил, чтобы заставить это работать, скажем, с 10 или более флажками?
@Override
public void onPause() {
super.onPause();
save(mCheckBox.isChecked());
}
@Override
public void onResume() {
super.onResume();
mCheckBox.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);
}
2 ответа
Решение
private void save (final String checkboxId, final boolean isChecked) {
// shared prefs yadda
editor.putBoolean(checkboxId, isChecked).commit();
}
Или создайте собственную схему (SQLite и т. Д.) И сохраните ее таким образом. В любом случае каждый уникальный флажок должен иметь уникальный идентификатор в постоянном хранилище.
Вы можете хранить свои CheckBoxes в массиве.
@Override
public void onPause() {
for (int i = 0; i < checkBoxArr.length; i++) {
save(i, checkBoxArr[i].isChecked());
}
}
private void save(int index, boolean isChecked) {
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("check" + index, isChecked);
editor.commit();
}
// etc...