A programban a menüpontok elemeit az
activity_main.xml állomány írja le. A Project Explorer-ben az erőforrás könyvtárban a menu könyvtárban található XML állomány írja le a programban megjelenő menü felépítését. (Az alábbi ábra szemlélteti, hogy hol kell keresni a menüt leíró XML erőforrás állományt a projektben.)
Az XML állományban egy darab menüpontot az alábbi XML node ír le:
-
Ahol az
android:id tulajdonság a menü egyedi azonosítóját tartalmazza, az
android:title tulajdonság a menü pont megjelenített nevét tartalmazza és végül az
android:orderInCategory attribútum pedig a menü elem sorrendjére vonatkozó információt tartalmaz.
A menük használatához és a menüpontok kiválasztásának eseménykezeléséhez az XML erőforrás szerkesztésen kívül még szükséges némi kódolás is.
Ehhez a MainAcitvity osztályban kell felülbírálni az Acitvity ősosztálytól örökölt metódusokat:
- public boolean onCreateOptionsMenu(Menu menu) metódust kell felülbírálni ahoz, hogy a program elndulásakor az XML erőforrásban leírt menüt létrehozza ("XML-ből felfújja") az a program.
- public boolean onOptionsItemSelected(MenuItem item) metódust kell felülbírálni ahhoz, hogy a menüpontok kiválasztására mi történjen a programban.
Eclipse-ben lehetőség van a menüből kiválasztani, hogy az ősosztály melyik metódusait szeretnénk felülbírálni a saját osztályunkban.
Első lépésben a Project Explorer-ben keressük ki a MainAcitvity.java osztályunkat és nyissuk meg ezt az osztályt a szerkesztőben. Ezután a MainActivity.java állomány szerkesztő ablakában jobb egér gombbal el kell navigálni az alábbi ábrán látható módon az Override/Implement methods menüpontba.
A fenti menüpont kiválasztása után az alábbi ablak jelenik meg:
A fenti listában ki kell keresni az onCreateOptionsMenu elemet és az onOptionsItemSelected elemet és ki kell jelölni, majd az OK gombbal jóvá kell hagyni a kiválasztást.
A jóváhagyás után az Eclipse elkészíti a MainAcitvity.java osztályban a két fenti metódus törzsét, amit fel kell tölteni az általunk végrehajtani kívánt kóddal.
Alább egy minta kódrészlet található a használatára:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_1:
Toast.makeText(this, "Menu1", Toast.LENGTH_LONG).show();
break;
case R.id.menu_2:
Toast.makeText(this, "Menu2", Toast.LENGTH_LONG).show();
break;
default:
break;
}
return true;
}
A fenti menüpontok az alábbi módon jelennek meg különféle rendszereken:
Gingerbread 2.3.3
JellyBean 4.1.2