Как инициализировать опцию меню флажок
У меня есть меню опций с флажком. Я могу установить и снять флажок, когда он был нажат пользователем, что нормально. Тем не менее, я использую 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;
}