In diesem Kapitel erstellen wir ein App-Menü und reagieren auf die Auswahl von Menüeinträgen.

Android App-Menü BeispielAndroid Menü Beispiel:

In der folgenden Beispiel-App erweitern wir ein leeres Activity um ein App-Menü. Hierzu erstellen Sie bitte ein neues Android Application Project in Eclipse. Wählen sie den Namen MenuBeispiel und ein Activity vom Typ Empty Activity.

Die meisten Activities, die über den Assistenten in Eclipse erstellt werden können (z.B. Blank Activity, Tabbed Activity), enthalten bereits ein Options-Menü. Wir beginnen in diesem Beispiel absichtlich mit einem leeren Activity, um die gesamten notwendigen Schritte zum Hinzufügen eines Menüs zu demonstrieren.

  1. Erstellen einer neuen XML Menü-Datei:
    Wählen Sie in Eclipse unter File -> New -> Other im Ordner Android den Eintrag Android XML File.
    Im daraufhin angezeigten Fenster wählen Sie unter Resource Type den Eintrag Menu.
    Geben Sie im Eingabefeld File bitte den Namen main_activity_menu an.
    Den nächsten Schritt überspringen Sie bitte mit einem Klick auf die Schaltfläche Finish.
  2. Öffnen Sie die soeben erstellte Datei res/menu/main_activity_menu.xml und fügen Sie einen neuen Menüeintrag durch einen Klick auf die Add Schaltfläche hinzu.
    Im Feld Title geben Sie bitte Menüeintrag 1 ein.
  3. Fügen Sie einen zweiten Menüeintrag durch einen Klick auf die Add Schaltfläche hinzu. Im daraufhin erscheinendem Fenster wählen Sie bitte „Create a new element at the top level, in Menu“ und in der Liste darunter markieren Sie bitte den Eintrag Item. Geben Sie im Feld Title die Bezeichnung Menüeintrag 2 ein. Zum Schluss setzen Sie im Feld Show as action noch die Werte ifRoom|withText durch einen Klick auf die die Select… Schaltfläche.
  4. Im nächsten Schritt wird das Menü geladen. Passen Sie dazu den Code in MainActivity.java wie folgt an:
     
    package com.individuapp.menubeispiel;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.Toast;
    
    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_activity_menu, menu);
    		return true;
    	}
    
    	@Override
    	public boolean onOptionsItemSelected(MenuItem item) {
    		int id = item.getItemId();
    		if (id == R.id.item1) {
    			Toast.makeText(this, "Menüeintrag 1 geklickt", Toast.LENGTH_SHORT).show();
    			return true;
    		} else if (id == R.id.item2) {
    			Toast.makeText(this, "Menüeintrag 2 geklickt", Toast.LENGTH_SHORT).show();
    			return true;
    		}
    		return super.onOptionsItemSelected(item);
    	}
    }
    

    Hier geschieht folgendes:

    • In Zeile 19 wird die Methode onCreateOptionsMenu() überschrieben, die von Android zum Erzeugen des Menüs aufgerufen wird. Das eigentliche Erzeugen des Menüs passiert in Zeile 20 über den Aufruf der Methode inflate(), der im ersten Parameter die XML Ressource des zu erzeugenden Menüs übergeben wird.
      Damit das Menü angezeigt wird, muss die Methode onCreateOptionsMenu() den Rückgabewert true liefern.
    • Die Methode onOptionsItemSelected() wird aufgerufen, nachdem ein Menüeintrag angeklickt wurde. Im Parameter item wird der angeklickte Menüeintrag geliefert, der in den Zeilen 27 und 30 zum Feststellen des angeklickten Menüeintrags verwendet wird.
      Zum Schluss wird true retourniert, wenn das Ereignis abgearbeitet wurde, wodurch das Ereignis konsumiert wird. Wurde das Ereignis nicht abgearbeitet, wird super.onOptionsItemSelected() aufgerufen, wodurch dessen weitere Bearbeitung fortgesetzt wird.