Menus en una aplicación de Android

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.

Menus en una aplicación de Android 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.