W tej części tutoriala dowiesz się w jaki sposób tworzyć i oprogramować menu aplikacji. Najpierw utwórz nowy projekt:
Menu główne aplikacji znajduje się w pliku zasobu res/menu/main.xml. Kliknij podwójnie w ten plik xml, żeby przejść do kreatora opcji menu:
Dodamy teraz trzy pozycje menu: action_hello_world, action_how_are_you i action_byebye_world. W tym celu kliknij przycisk Add i w okienku tworzenia pozycji menu wybierz opcję Create a new element at the top level, in Menu oraz na liście typów zaznacz element Item:
Kliknij przycisk OK. Zostanie dodana opcja item1. Operację powtórz dwukrotnie, żeby dodać pozycje item2 i item3. Teraz przystąpimy do edycji właściwości tych elementów. Ustaw je tak jak przedstawiono w poniższej tabeli:
item1 | Id: @+id/action_hello_world Title: @string/action_hello_world |
item2 | Id: @+id/action_how_are_you Title: @string/action_how_are_you |
item3 | Id: @+id/action_byebye_world Title: @string/action_byebye_world |
Słowo @+id/ oznacza, że nadajemy pozycji identyfikator i ten identyfikator powinien znaleźć się
w klasie zasobów R. Słowo @string/ oznacza, że nadajemy wartość tekstowego zasobu
o podanej nazwie.
Po tych operacjach nasze menu przyjmie następującą postać:
Teraz uzupełnimy zasoby tekstowe o podane wyżej nazwy: action_hello_world, action_how_are_you, action_byebye_world. W tym celu podwójnie kliknij plik res/values/strings.xml i przełącz się do pozycji strings.xml w dolnej zakładce edytora (obok pozycji Resources). Następnie wprowadź brakujące wpisy zgodnie z podanym niżej kodem źródłowym:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">menu-handling</string>
<string name="action_settings">Ustawienia</string>
<string name="action_hello_world">Witaj świecie</string>
<string name="action_how_are_you">Jak się masz</string>
<string name="action_byebye_world">Żegnaj świecie</string>
<string name="hello_world">Witaj świecie!</string>
</resources>
Menu i zasoby tekstowe mamy już gotowe, więc przystąpmy do oprogramowania menu w kodzie głównej aktywności. Podwójnie kliknij pozycję src/com.example.menu_handling/MainActivity.java w celu otworzenia kodu naszej aktywności w edytorze Eclipse. Zauważ, że znajduje się tam następująca metoda:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
Metoda ta odpowiada za dodanie utworzonych pozycji menu do menu aplikacji. Ponieważ nasze menu znajduje się w pliku main.xml, więc odwołujemy się w kodzie do niego przez zastosowanie konstrukcji R.menu.main. Gdybyśmy przykładowo utworzyli drugi zasób menu w pliku res/menu/secondary.xml, to odwoływlibyśmy się w kodzie do niego za pomocą R.menu.secondary.
Żeby obsłużyć kliknięcia w pozycje menu, musimy dodać następującą metodę:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
Toast.makeText(getApplicationContext(), "Ustawienia", Toast.LENGTH_SHORT).show();
break;
case R.id.action_hello_world:
Toast.makeText(getApplicationContext(), "Witaj świecie", Toast.LENGTH_SHORT).show();
break;
case R.id.action_how_are_you:
Toast.makeText(getApplicationContext(), "Jak się masz", Toast.LENGTH_SHORT).show();
break;
case R.id.action_byebye_world:
Toast.makeText(getApplicationContext(), "Żegnaj świecie", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
Metoda ta jest wywoływana każdorazowo po kliknięciu w dowolną z opcji menu. Pobiera ona id klikniętej opcji przy pomocy wywołania item.getItemId() i w instrukcji switch wybiera właściwy identyfikator prezentując odpowiedni komunikat Toast.
Kompletny kod programu możesz pobrać tutaj: menu-handling.zip.