Как сохранить состояние Android CheckBox, когда пользователи выходят из приложения? - PullRequest
5 голосов
/ 17 апреля 2011

Можно ли каким-либо образом сохранить состояние своих флажков (отмеченных или не отмеченных), когда пользователь выходит из приложения, чтобы я мог перезагрузить это состояние при перезапуске приложения?

@Override
public void onPause()
{

    super.onPause();
    save(itemChecked);
}
@Override
public void onResume()
{
    super.onResume();
    checkOld = load();

    for (int i = 0 ; i < checkOld.length; i++)
    {
        notes.ctv.get(i).setChecked(checkOld[i]);
    }
}
@Override
public void onRestart()
{
    super.onResume();
    checkOld = load();

    for (int i = 0 ; i < checkOld.length; i++)
    {
        notes.ctv.get(i).setChecked(checkOld[i]);
    }
}

private void save(final boolean[] isChecked) {
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
 insertState();
 for(Integer i = 0; i < isChecked.length; i++)
 {
     editor.putBoolean(i.toString(), isChecked[i]);
 }
editor.commit();
}

private boolean[] load() {
SharedPreferences sharedPreferences = getPreferences(Context.MODE_PRIVATE);
    boolean [] reChecked = new boolean[itemChecked.length];
    for(Integer i = 0; i < itemChecked.length; i++)
    {
         reChecked[i] = sharedPreferences.getBoolean(i.toString(), false);
    }
    return reChecked;
}

Ответы [ 2 ]

21 голосов
/ 17 апреля 2011

Объедините onPause() и onResume() для сохранения и загрузки значения CheckBox.

Пример кода:

@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);
}
0 голосов
/ 17 апреля 2011

Я полагаю, что в учебнике Google Notepad3 объясняется, как сохранить и восстановить состояние. http://developer.android.com/resources/tutorials/notepad/notepad-ex3.html

сохранить пакет состояний в onSaveInstanceState (), а затем вернуть пакет обратно в onStart ()

Надеюсь, что это поможет

Редактировать: также отметьте это, оно более лаконично. onSaveInstanceState () и onRestoreInstanceState ()

...