Oldalak

2012. november 3., szombat

Menü kezelés megvalósítása XML erőforrásból

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

Nincsenek megjegyzések:

Megjegyzés küldése