Главная » Разработка для Android » Динамическое изменение пунктов меню

0

Переопределяя метод onPrepareOptionsMenu из своей Активности, вы можете менять  меню в зависимости от текущего состояния приложения, прежде чем оно будет выведено на экран. Это позволяет  вам динамически делать пункты доступными/недоступными, видимыми/невидимыми, из- менять их текст.

Динамически изменять объекты MenuItem можно двумя способами: на- ходить ссылку на пункты меню в методе onCreateOptionsMenu при их соз- дании либо использовать метод findItem из объекта Menu. В листинге 4.27 показан второй вариант, предусматривающий переопределение обработчика onPrepareOptionsMenu.

Листинг 4.27. Динамическое изменение  меню

@Override

public boolean onPrepareOptionsMenu(Menu menu) {

super.onPrepareOptionsMenu(menu);

MenuItem menuItem = menu.findItem(MENU_ITEM);

[ … изменение пунктов меню … ]

return true;

}

Выбор пунктов меню

Android контролирует все события, связанные с выбором пунктов в меню Активностей, используя единственный обработчик  onOptionsItemSelected. Назначенный пункт передается этому методу в виде параметра MenuItem.

Чтобы реагировать на выбор конкретных пунктов, необходимо сравни- вать значение item.getItemId с идентификаторами объектов MenuItem, кото- рые вы использовали при заполнении меню, и выполнять соответствующий код, как показано в листинге 4.28.

Листинг 4.28. Обработка  событий, отвечающих за выбор пунктов меню

public boolean onOptionsItemSelected(MenuItem item) {

super.onOptionsItemSelected(item);

// Определите, какой именно пункт меню был выбран

switch (item.getItemId()) {

// Сделайте перебор по всем известным пунктам case (MENU_ITEM):

[ … Выполните обработку … ]

return true;

}

// Верните false, если вы не обработали это событие. return false;

}

Дочерние и контекстные меню

Контекстные меню используют те же всплывающие окна, что и дочер- ние (см. рис. 4.9). И хотя внешне они не отличаются, заполняются разными способами.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии