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; }
Nincsenek megjegyzések:
Megjegyzés küldése