Použití menu v aplikacích

Samozřejmostí většiny aplikací je přítomnost nějakého menu. Platforma Android umožňuje vytvářet menu opravdu jednoduše, demonstruje to následující příklad:

package cz.minmax.android;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;

public class MenuTest extends Activity
{
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu)
  {
    super.onCreateOptionsMenu(menu);
    menu.add("Uložit");
    menu.add("Otevřít");
    menu.add("Ahoj");
    menu.add("Čau");
    menu.add("Položka XY");
    menu.add("Položka Z");
    menu.add("Položka ahoj");
    return true;
  }
}

Metoda onCreateOptionsMenu je zavolána tehdy, když je menu potřeba poprvé vytvořit. Dále už se jen zobrazuje. Do položek menu se dají přidávat ikonky, v našem případě máme pro jednoduchost jen slovní popis. Pokud spustíte tento kód, výstup vypadá takto (po stisknutí tlačítka MENU):

Po kliknutí na některou položku se však (zatím) nic nestane. K tomu, aby se vyvolala nějaká akce, slouží metoda onOptionsItemSelected(Menu.Item item). Doplníme o ni tedy náš kód:

@Override
public boolean onOptionsItemSelected(Menu.Item item)
{
  /** Select statement to handle calls to specific menu items */
  switch (item.getId())
  {
    case 0:
      //do something
      return true;
    case 1:
      return true;
    case 2:
      return true;
    case 3:
      return true;
    case 4:
      return true;
    case 5:
      return true;
    case 6:
      return true;
    case 7:
      return true;
  }
  return true;
}

V metodě je potřeba rozlišit číslo stisknuté položky, to se získa jako item.getId(). V našem kódu se bere číslo položky její pořadí, případně se dá explicitně určit přetíženou metodou
add(int groupId, int itemId, int order, int titleRes). Viz API reference.