Как инициализировать опцию меню флажок

У меня есть меню опций с флажком. Я могу установить и снять флажок, когда он был нажат пользователем, что нормально. Тем не менее, я использую SharedPreferences для хранения значения этого флажка, поэтому мне также нужно инициализировать флажок тем, что хранится в значении префикса SharedPreferences, т.е. если pref имеет значение true / false, установите флажок флажок / бесконтрольно.

Я предполагаю, что мне нужно поместить некоторый код внутри моего onCreateOptionsMenu, и мне, очевидно, нужно использовать.setChecked (preference) для установки флажка, но как мне программно ссылаться на сам флажок?

Меню создано с использованием:

public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
return true;
}

Флажок можно установить / снять, используя:

public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.two_week:
            if (item.isChecked()) {
                item.setChecked(false);
            }
            else {
                item.setChecked(true);
            }
            return true;
        default:
            return super.onOptionsItemSelected(item);
     }
}

1 ответ

Решение

Я думаю, что единственный метод, который вам не хватает, это findItem() меню. Вы можете легко загрузить любые SharedPreferences (называемые prefs вот) вот так:

SharedPreferences prefs;
...

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);

    boolean checked = prefs.getBoolean("two weeks", false);
    menu.findItem(R.id.two_week).setChecked(checked);
    return true;
}
Другие вопросы по тегам