保存多个复选框状态

时间:2012-02-22 18:44:35

标签: android checkbox savestate

我已经使用此代码为用户返回时保存了一个复选框,但我需要在整个应用程序中有许多复选框。我确信最好的方法是不要复制和粘贴这段代码,但似乎无法找到它。

如果使用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 个答案:

答案 0 :(得分:0)

您可以将CheckBox存储在一个数组中。

@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...

答案 1 :(得分:0)

private void save (final String checkboxId, final boolean isChecked) {
   // shared prefs yadda
   editor.putBoolean(checkboxId, isChecked).commit();
}

或者创建自己的模式(SQLite等)并以此方式持久化。在任何情况下,每个唯一的复选框都需要在持久存储中具有唯一的ID。