Añadiendo un menú a una actividad

Android permite asignar menús a las actividades. En las versiones de Android anteriores a 3.0 los dispositivos disponían de una tecla para mostrar el menú. En las versiones actuales el menú puede abrirse desde la barra de acciones. Este elemento, que tiene una gran importancia en el diseño de la interfaz de usuario en una aplicación Android, se estudiará en el siguiente punto.

NOTA: En el siguiente vídeo se habla de”menús contextuales”. Este termino no es  adecuado dado que puede confundirse con otro tipo de menús. Un termino más preciso sería “menú de actividad”.

video[Tutorial Añadiendo un menú en Android

Ejercicio: Añadiendo un menú a una actividad

 Podemos asignar un menú a nuestra actividad de forma muy sencilla.

1.    Si estás desarrollando el proyecto Asteroides. Crear un nuevo menú, usa File > New > Android resource file. En el campo File name: selecciona menu_main y en el campo Resource type: selecciona Menu.
Si desarrollas Mis Lugares abre el fichero res / menu / menu_main.xml.

NOTA: El fichero de menú se crea automáticamente si seleccionas una actividad de tipo: Basic Activity o Scrolling Activity.

2.    Reemplaza el contenido que se muestran a continuación:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">
   <item android:id="@+id/action_settings"
         android:title="Preferencias"
         android:icon="@android:drawable/ic_menu_preferences"
         android:orderInCategory="100" 
         app:showAsAction="never"/>
   <item android:title="Acerca de..." 
         android:id="@+id/acercaDe"
         android:icon="@android:drawable/ic_menu_info_details"/>
</menu> 
Como puedes ver cada ítem de menú tiene tres atributos principales: id que permite identificarlo desde el código, title, para asociarle un texto e icon, para asociarle un icono. Los otros dos atributos se aplican cuando el menú actua como una barra de acciones y serán explicados en el próximo punto. 

3.    A continuación se muestra la apariencia de este menú. Esta apariencia puede cambiar dependiendo de la versión de Android.

4.      Para activar el menú, has de introducir el siguiente código en la actividad que muestra el menu. Posiblemente solo tengas que incluir el texto subrayado.

@Override public boolean onCreateOptionsMenu(Menu menu) {
   getMenuInflater().inflate(R.menu.menu_main, menu);
   return true; /** true -> el menú ya está visible */
}
    
@Override public boolean onOptionsItemSelected(MenuItem item) {
   int id = item.getItemId();
   if (id == R.id.action_settings) {
      return true;
   }
   if (id == R.id.acercaDe) {
      lanzarAcercaDe(null);
      return true;
   }
   return super.onOptionsItemSelected(item);
} 
override fun onCreateOptionsMenu(menu: Menu): Boolean {
   menuInflater.inflate(R.menu.menu_main, menu)
   return true
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
   return when (item.itemId) {
      R.id.action_settings -> true
      R.id.acercaDe -> { 
         lanzarAcercaDe()
         true
      }
      else -> super.onOptionsItemSelected(item)
   }
} 

5.     Ejecuta el programa y pulsa en el icono del menú en la esquina superior derecha. Han de aparecer los dos ítems de menú. Selecciona Acerca de… para pasar a la actividad correspondiente.

Preguntas de repaso: Menús