10 апреля 2010 г.

Добавление Меню в Android программу

Переведено мною отсюда.

Меню опций.

Меню открывается нажатием кнопки на устройстве MENU. При открытии, меню содержит первые шесть пунктов. Если в меню более чем шесть элементов, то пять из них добавляются в меню опций, а затем те, которые не могут поместиться в меню Icon выявляются в расширенном меню, с помощью пункта меню "еще..". Расширенное меню будет автоматически добавлено, когда существуют более шести пунктов.


В меню опций Вы можете включить основные функции приложения и все необходимые элементы навигации. Вы также можете добавить подменю.

При создании меню, система Android будет вызывать метод onCreateOptionsMenu(). Вам необходимо переопределить этот метод в своем Activity и добавить в теле метода собственные пункты Меню. Вы можете заполнить меню с помощью с помощью ресурсов, которые были определены в XML файле, или вызвав метод add() для каждого добавляемого элемента. Этот метод добавляет элемент меню, и возвращает новый объект MenuItem для вас. Вы можете использовать возвращенный MenuItem, чтобы задать дополнительные параметры, как иконка, клавиши быстрого доступа и другие параметры для данного элемента.

Есть несколько вариантов вызова метода add(). Как правило, вы будете использовать один, который принимает Itemid аргумент. Это уникальное целое число, которое позволяет однозначно определить нажатый элемент меню.

Событие при выборе элемента меню опций можно отловить в методе onOptionsItemSelected(). Этот метод передает вам пункт меню, который был выбран. Вы можете определить пункт, по Itemid, с помощью getItemId (), которая возвращает целое число, которое было установлено для элемента в методе add(). Как только Вы определите нажатый пункт меню, Вы сможете описать реализацию действий в Вашей программе.

Вот пример такой процедуры, в которой мы создаем меню и обрабатываем выбор пункта меню:
private static final int MENU_NEW_GAME = 0;
private static final int MENU_QUIT = 1;
/* Creates the menu items */
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(0, MENU_NEW_GAME, 0, "New Game");
    menu.add(0, MENU_QUIT, 0, "Quit");
    return true;
}

/* Handles item selections */
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case MENU_NEW_GAME:
        newGame();
        return true;
    case MENU_QUIT:
        quit();
        return true;
    }
    return false;
} 

Добавление иконки.

Для добавления иконки к пункту меню необходимо вызвать метод setIcon() :
menu.add(0, MENU_QUIT, 0, "Quit")
    .setIcon(R.drawable.menu_quit_icon);