0

このコードを使用して、ユーザーが戻ったときにチェックボックスを 1 つ保存しましたが、アプリケーション全体に多くのチェックボックスが必要です。このコードをコピーして貼り付けるのが最善の方法ではないと確信していますが、それが何であるかを見つけることができないようです.

これを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);
}
4

2 に答える 2

0

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...
于 2012-02-22T18:52:00.630 に答える
0
private void save (final String checkboxId, final boolean isChecked) {
   // shared prefs yadda
   editor.putBoolean(checkboxId, isChecked).commit();
}

または、独自のスキーマ (SQLite など) を作成し、その方法で永続化します。いずれにせよ、すべての一意のチェックボックスには、永続ストアで一意の ID が必要です。

于 2012-02-22T18:54:56.653 に答える