Cómo crear un menú en Android Studio

16
3221
tutoriales android studio

Si has llegado hasta aquí con vida es que realmente te interesa el mundo del androide verde. Tras haberte explicado cómo crear tu primera aplicación en Androidcómo crear un layout, el siguiente paso para seguir mejorando tu aplicación es crear un menú en Android Studio.

Qué es un menú

No nos hemos parado a explicarlo demasiado porque seguramente te lo imagines, pero el menú es lo que aparece en la parte superior de la aplicación, dónde se alojan los botones que nos llevan a diferentes opciones, como es el caso de Settings, que vemos en la siguiente imagen. Se trata de un menu_main.xml, que suele ser el menú por defecto, salvo que le cambiemos el nombre.

menu-android1

 

Cada layout tiene un menú

La realidad, es que cada layout tiene un menú. En una aplicación con muchos layouts puede existir un único menú, porque no siempre hacen falta opciones a mayores que la anterior. Lo más común, es que existan varios menús, ya que puede haber layouts que tienen un icono de buscar o de añadir, mientras que otros solamente tienen un about.

Cómo crear un menú en Android Studio

Pues bien, una vez sabido qué es menú ya podemos proceder a crearlo en Android Studio. Para hacerlo, debemos situarnos en la carpeta res > menu, en la que haremos clic derecho dónde nos saldrá la siguiente opción:

New > Menu resource file

crear-menu

Nombre del menú

nombre-menu

Menú creado

dos-menus

menu-vacio

Como podemos ver en las anteriores imágenes, acabamos de crear un nuevo menú “androidstudiofaqs”. Este menú, se crea junto al otro que ya había predefinido (menu_main.xml, que incluirá Settings por defecto o lo que queramos). Y además, como vemos en la anterior imagen, viene completamente vacío, por lo que podemos darle estilo basándonos en el menú predefinido.

El menú se invoca en la activity

Para probar este menú, debemos situarnos en la clase que extiende de una actividad dentro del método onCreateOptionsMenu(). Aquí debemos llamar al menú que acabamos de crear, ya que será el menú que tendrá asociado a dicha activity.

menu-new-activity

oEn nuestro caso, hemos creado un menú vacío, pero en el caso del menu_main.xml vemos que tiene código y se hace referencia a Settings, por lo que dentro de onOptionsItemSelected() implementaremos el comportamiento del menú al hacer clic en dicho botón. Esto en concreto lo veremos en detalle más adelante, además de jugar con diversos botones en un mismo menú.

¿Cómo lleváis los conceptos hasta ahora? Si tenéis alguna duda, dejadme un comentario y os ayudaré encantada.

Creación del del menú

Código del menú con Settings (recomendado)

Código java que carga el menú

Si tienes muchas opciones, lo ideal es hacer un case para contemplarlas todas. Puedes preguntarme en los comentarios si tienes dudas.

Actualización importante

Tutorial sobre cómo crear un submenú en Android Studio.

No te lo pierdas

16 Comentarios

  1. Disculpen tengo un error en esa parte del codigo (la flecha). me podria decir cual es el problema 😛

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if (id == R.id.Configuracion) {
    return true;
    // lo ideal aquí sería hacer un intent para abrir una nueva clase como lo siguiente
    ————–> Log.i(“ActionBar”, “Settings!”);
    Intent about = new Intent(getApplicationContext(), Configuracion.class);
    startActivity(about);
    return true;

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if (id == R.id.Configuracion) {
    return true;
    // lo ideal aquí sería hacer un intent para abrir una nueva clase como lo siguiente
    Log.i(“ActionBar”, “Settings!”);
    Intent about = new Intent(getApplicationContext(), Configuracion.class);
    startActivity(about);
    return true;

    //Toast.makeText(MainActivity.this,”Hola”,Toast.LENGTH_SHORT).show();

    return true;
    }@Override
    public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if (id == R.id.Configuracion) {
    return true;
    // lo ideal aquí sería hacer un intent para abrir una nueva clase como lo siguiente
    Log.i(“ActionBar”, “Settings!”);
    Intent about = new Intent(getApplicationContext(), Configuracion.class);
    startActivity(about);
    return true;

    //Toast.makeText(MainActivity.this,”Hola”,Toast.LENGTH_SHORT).show();

    return true;
    }

    return super.onOptionsItemSelected(item);
    }

    return super.onOptionsItemSelected(item);
    }//Toast.makeText(MainActivity.this,”Hola”,Toast.LENGTH_SHORT).show();

    return true;
    }

    return super.onOptionsItemSelected(item);
    }

    • Hola amigo! Simplemente es un log que mostraría el resultado en consola. Si haces el import ya no debería darte error (import android.util.Log;), sino simplemente bórralo!!!

      Ya va bien??

  2. Tengo un problema con el menu, cuando deslizable que cuando selecciono algun Item me abre la actividad nueva que cree pero me quita el menu deslizable, como podría solucionar ese inconveniente?

  3. Hola. Tengo un problema cuando creo un menu en una segunda activity este no aparece al mometo de correr la app en un telefono movil. que puede ser?

    • Tienes esto ¿?

      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_2, menu);
      return true;
      }

      En la segunda activity? con el nombre del nuevo menú o el mismo si es el mismo claro.

  4. Como hago para que el menu aparezca en todas las pantallas que quiero? Y en que momento inserto el menu en las pantallas, en el tutorial no lo veo. Gracias

    • Tienes que añadir el código java que carga el menú (está abajo del artículo). Dependiendo de la pantalla que quieras, tendrás que pegar ese código en su clase java donde lo invocas

Dejar respuesta

Adivina adivinanza *