Cómo crear menús en Android


La mayoría de las Apps utilizan un menú general, con múltiples entradas, para configurar ciertos cambios de la misma a gusto del usuario, mostrar la ayuda, etc.

Este menú lo podemos generar desde Android y modificar a nuestro antojo. Su visualización varía en dependencia de la versión de Android en la que se ejecute la App. En las últimas versiones de Android podemos observar un elegante menú en comparación con las versiones anteriores:

Android 2.3.4

Android 2.3.4

Android 4.4.2

Android 4.4.2

En este artículo aprenderás cómo crear este menú y ejecutar acciones al pulsar sobre las entradas del mismo. Para ello crearemos una sencilla App con un menú que contendrá en sus entradas: Preferencias y Mi Música.

También crearemos dos Activities que corresponden con las entradas del menú, para que al pulsar sobre alguna de estas nos lleve hacia su correspondiente Activity
Para empezar es necesario crear un nuevo proyecto con el IDE de su agrado, por mi parte uso ADT. Al crear una nueva aplicación podemos apreciar que por defecto Android nos ha creado un fichero XML llamado main (En dependencia del nombre suministrado a la Activity principal) en la ruta ./res/menú/, y autogeneró el código necesario para inflar el mismo en la clase MainActivity:

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

Si compilamos la App en este paso podemos observar que ya tenemos un menú con la opción Settings agregada por defecto.

Bien, para modificar este menú y que muestre las opciones que deseamos, basta con dirigirse a ./res/menú/main.xml y modificar este XML para que muestre los elementos deseados, quedaría algo como esto:

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

    <item
        android:id="@+id/menu_preferencias"
        android:title="Preferencias"/>
    <item
        android:id="@+id/menu_mi_musica"
        android:title="Mi Musica"/>

</menu>

Ya en las entradas del menú se encuentra Preferencias y Mi Música. Para continuar vamos a crear las dos Activities para crearlas basta con dar clic derecho encima del proyecto, paso seguido New/Other y seleccionamos Android Activity.

Clic en Next, especificamos el nombre de la Activity y luego pulsamos en Finish, repetimos este paso para crear la otra.
Ya con las Activities creadas solo nos resta el código java: Dentro de la clase MainActivity especificamos qué hacer cuando el usuario presione una opción del menú:
MainActivity.java:

public class MainActivity extends Activity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
    }
  
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
    }
    
    public boolean onOptionsItemSelected(MenuItem item) {
  
      /* Creamos un Intent, este tipo de datos nos 
       * posibilita navegar entre las Activities
       */
      
      Intent intent;
   
      /*
      Es necesario saber qué item seleccionó el usuario, 
      para esto utilizamos un switch. En este caso lo que
      queremos es que al presionar sobre una entrada en el 
      menú nos ejecute la Activity correspondiente creada 
      anteriormente
      */
          
      switch (item.getItemId()) {                  
          
        case R.id.menu_preferencias:
            intent = new Intent(this, Preferencias.class);
            startActivity(intent);
            break;
            
        case R.id.menu_mi_musica:
            intent = new Intent(this, Mi_Musica.class);
            startActivity(intent);
            break;
      }
          
        return super.onOptionsItemSelected(item);
    }
  }

Hasta aquí hemos visto cómo utilizar los menús en nuestras Apps, no olviden que al utilizarlos ahorramos espacio en nuestras app y organizamos más nuestro diseño. Puedes descargar el demo para que compruebes su funcionamiento. Cualquier duda o sugerencia puedes dejarla en los comentarios.