Как я могу получить меню параметров моей деятельности?



В некоторых методах моей деятельности я хочу проверить название меню или узнать, проверено оно или нет. Как я могу получить меню активности. Мне нужно что-то вроде this.getMenu()

468   5  

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);
    }
}

Вызовите invalidateOptionsMenu () вместо передачи объекта меню.

Это можно сделать, передав объект меню в класс 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

    Ничего не найдено.