Imprimir

Es muy frecuente que las aplicaciones Android dispongan de un menú para facilitar al usuario el acceso a determinas funciones de la aplicación. Para mostrar el menú, el usuario puede pulsar el botón Menu si el dispositivo cuenta con un botón físico para ello, o bien en pantalla se mostrará un icono en forma de puntos verticales que mostrarán de igual manera el menú. Esta última opción es la habitual a partir de Android 3.0.

menu01   menu02

La lista de opciones que va a ofrecer la aplicación debe declararse en un archivo XML creada en una carpeta menu dentro de los recursos de la aplicación. Como es habitual, se pueden crear distintas configuraciones de menús en distintas carpetas aplicando los cualificadores necesarios al nombre de la carpeta menu.

El asistente de creación de proyectos Android de Eclipse crea un archivo de menú con un sólo elemento, dentro de la carpeta res/menu con el nombre de la activity principal que se haya creado con el asistente.

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/menu_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="@string/menu_settings"/>

</menu>

Como puedes observar, este menú consta de un solo elemento (item). Cada elemento del menú debe declararse con la etiqueta item al que se le aplican una serie de atributos. La lista completa de atributos los puedes consultar en la página Menu Resource. Los más frecuentes son los siguientes:

En el archivo autogenerado aparecen además los siguientes:

Para añadir un nuevo item, puedes ayudarte del código del item que viene predefinido y hacer las moficaciones oportunas. Por ejemplo, si quieres hacer una opción de ayuda, el código XML del item podría ser:

<item android:id="@+id/help"
    android:icon="@drawable/icono_ayuda"
    android:title="@string/ayuda" />

El método onCreateOptionsMenu que permite mostrar el menú, ya lo debes tener disponible en código Java predefinido que crea el asistente del proyecto en la activity principal.

public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

Observa que el método anterior se hace referencia al nombre del recurso menu (R.menu.activity_main) que se debe haber creado con la estructura del menú. Así que observa si debes cambiarlo, según el nombre del archivo XML que contiene el menú.

Para controlar los clics que hace el usuario sobre los elementos de un menú, se debe sobreescribir el método onOptionsItemSelected. Usando la sentencia switch con el dato que ofrece item.getItemId(), puedes controlar de manera sencilla el código correspondiente a cada elemento del menú a través de su ID.

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_settings:
            configuracion();
            return true;
        case R.id.help:
            ayuda();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

Debes retornar true cada vez que se controla un item del menú, y en otro caso se retorna el valor ofrecido por la implementación de este método onOptionsItemSelected en la superclase.