Curso de Android | Menus

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Ejercicio: Crear un menú

Un menú contextual es lanzado al pulsar la tecla menú del teléfono.

res/menu/menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:id="@+id/item1" android:title="Option 1" android:icon="@android:drawable/ic_menu_compass" />
 <item android:id="@+id/item2" android:title="Option 2" android:icon="@android:drawable/ic_menu_call" />    
</menu>
MenuActivity.java
public class MenuActivity extends Activity {
 ...
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.menu, menu);
  return true;
 }

Al ejecutar la aplicación pulsamos el botón de menú para ver los menús.

Curso de Android | Menus 1

Ejercicio: Detectar la pulsación de un menú

Añadimos el siguiente código al java anterior:


public boolean onOptionsItemSelected(MenuItem item){
 if(item.getItemId() == R.id.item1){
     Log.d("opcion", "opcion 1 pulsada");
    }
 return super.onOptionsItemSelected(item);
}

También se podía haber hecho con el método onclick, procesando la información de la siguiente forma:

public void menuPulsado(MenuItem menu){
 ...
}

Problema al cambiar la orientación de la pantalla

Al cambiar la orientación se destruyen los componentes visuales y se vuelven a crear, llamando al onCreate.

Podemos solventar los problemas que esto pueda acarrear modificando el nodo <activity> correspondiente del AndroidManifest.xml:

– Para limitar el giro de la aplicación:
android:screenOrientation=»portrait»

– Para que no se destruya el activity:
android:configChanges=»keyboard | keyboardHidden | orientation | screenSize | smallestScreenSize»

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.