Сохранение значения checkbox

270
27 февраля 2017, 11:48

Имеется checkbox в item menu, не получается сохранять его позицию(чекнут или не чекнут).

Пробую сохранять значение таким кодом:

case R.id.menuHideShowTime:
            if(item.isChecked()){
                item.setChecked(false);
            }else{
                adapter.toggleStateTime(); //вывод значения
                item.setChecked(true);
            }
            SharedPreferences settings = getSharedPreferences("menuHideShowTime", 0);
            SharedPreferences.Editor editor = settings.edit();
            editor.putBoolean("menuHideShowTime",item.isChecked());
            editor.commit();
            break;

Но, не получается, при смене активности и переходе в него братно - значение чекбокса не чекнуто

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.message_menu, menu);
    MenuItem item = menu.findItem(R.id.menuHideShowTime);
    SharedPreferences settings = getPreferences(MODE_PRIVATE);
    item.setChecked(settings.getBoolean("menuHideShowTime", false));
    return super.onCreateOptionsMenu(menu);
}
Answer 1

Проблема в том, что сохраняете вы значение в SharedPreferences, а пытаетесь выгрузить из Prefereces. Это не одно и то же. Preferences сохраняют данные в специально отведенный для этого файл, SharedPreferences же используют тот файл, который укажете вы. Для решения проблемы нужно выбрать один из объектов и использовать только его.

Answer 2

Когда вы пишите

SharedPreferences settings = getSharedPreferences("menuHideShowTime", 0);

Создаётся файл с именем "menuHideShowTime". Этот метод используется, когда нужно использовать несколько разных файлов для сохранения данных.

Когда пишите так:

SharedPreferences settings = getPreferences(MODE_PRIVATE);

Данные записываются в один общий файл.

Вам нужно писать одинаково для одних и тех же данных. Иначе не получиться их найти.

Кстати, значение MODE_PRIVATE равно 0. Можно указывать и то, и то.

READ ALSO
Как составить план чтобы быть тру программистом? [требует правки]

Как составить план чтобы быть тру программистом? [требует правки]

Мне 21 годДля себя решил стать программистом

274
Как задать клики по координатам в Selenium(Java)

Как задать клики по координатам в Selenium(Java)

Добрый день, подскажите как правильно задать в селениуме клики по координатам?

301
Рандомное проигрывание libgdx

Рандомное проигрывание libgdx

Имеется приложение, клон flappy bird, при смерти, воспроизводится файлТребуется сделать так, чтобы воспроизводился не один файл, а рандомный из списка

336
Reference counting Java

Reference counting Java

Какие недостатки имеет метод reference counting при обнаружении мусора?

312