В некоторых методах моей деятельности я хочу проверить название меню или узнать, проверено ли оно или нет. Как я могу получить меню "Активность". Мне нужно что-то вроде this.getMenu()
Как я могу получить меню опций моей активности?
Ответ 1
Будьте осторожны с invalidateOptionsMenu()
. Он воссоздает все меню. У этого есть много накладных расходов и reset встроенные компоненты, такие как SearchView
. Мне потребовалось некоторое время, чтобы выяснить, почему мой SearchView
будет "случайно" закрыт.
В итоге я запустил меню, которое было опубликовано Dark, а затем при необходимости вызовите onPrepareOptionsMenu(Menu)
. Это соответствовало моим требованиям без неприятных побочных эффектов. Gotcha: Обязательно выполните нулевую проверку, если вы вызываете onPrepareOptionsMenu()
до создания меню. Я сделал это, как показано ниже:
private Menu mOptionsMenu;
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
mOptionsMenu = menu
...
}
private void updateOptionsMenu() {
if (mOptionsMenu != null) {
onPrepareOptionsMenu(mOptionsMenu);
}
}
Ответ 2
Вызовите invalidateOptionsMenu() вместо передачи объекта меню.
Ответ 3
вы можете сделать это, передав объект Menu в класс Activity
public class MainActivity extends Activity
{
...
...
private Menu _menu = null;
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
_menu = menu;
return true;
}
private Menu getMenu()
{
//use it like this
return _menu;
}
}
Ответ 4
Существует несколько методов обратного вызова, которые предоставляют меню в качестве параметра.
Вы можете захотеть манипулировать им там.
Например:
onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
onCreateOptionsMenu(Menu menu)
onCreatePanelMenu(int featureId, Menu menu)
Там еще несколько, лучше всего загляните в документацию о деятельности и найдите нужный метод: http://developer.android.com/reference/android/app/Activity.html
Ответ 5
Насколько я понял, что вы хотите здесь, это может помочь вам:
1. Обратитесь к этому руководству в меню .
2. Каждый раз, когда пользователь нажимает кнопку меню, вы можете проверить его название через getTitle()
.
3. Или, если вы хотите узнать, что последний пункт меню отмечен или выбран, когда пользователь не нажал кнопку меню, вам нужно сохранить настройки, когда пользователь нажимает.