5 ответов:
Будьте осторожны
invalidateOptionsMenu(). Он воссоздает все меню. Это имеет много накладных расходов и приведет к сбросу встроенных компонентов, таких как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); } }
Это можно сделать, передав объект меню в класс 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; } }
Существует несколько методов обратного вызова, которые предоставляют меню в качестве параметра.
Возможно, вы захотите манипулировать им там.
Например:
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
Насколько я могу понять, то, что вы хотите здесь, может помочь вам:
1. обратитесь к этому учебнику черезменю опций .
2. каждый раз, когда пользователь нажимает кнопку меню, вы можете проверить его название через
getTitle().3. или если вы хотите знать последний пункт меню, отмеченный или выбранный, когда пользователь не нажал кнопку меню, то вам нужно сохранить настройки, когда пользователь нажимает.
Comments