保存多个复选框状态

发布于 2025-01-08 07:32:10 字数 749 浏览 1 评论 0原文

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

我需要添加或更改什么才能使其与 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);
}

I've used this code to get one checkbox saved for when the user returns, but I need to have many checkboxes throughout the application. I'm sure the best way isn't to copy and paste this code, but can't seem to find what it is.

What would I add or change to make this work with say 10 or more checkboxes?

@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);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寒江雪… 2025-01-15 07:32:10
private void save (final String checkboxId, final boolean isChecked) {
   // shared prefs yadda
   editor.putBoolean(checkboxId, isChecked).commit();
}

或者创建您自己的模式(SQLite 等)并以这种方式保留。无论如何,每个唯一的复选框都需要在持久存储中具有唯一的 ID。

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

Or create a schema of your own (SQLite, etc) and persist that way. In any case, every unique checkbox needs to have a unique id in the persistent store.

在你怀里撒娇 2025-01-15 07:32:10

您可以将复选框存储在数组中。

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

You could store your CheckBoxes in an array.

@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...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文