A legutóbb publikált alkalmazásom béta tesztelése közben derült ki, hogy billentyűzet és billentyűzet közt van különbség. Nevezetesen hogy amíg a Vialin ROM, ami fölött fejlesztek, és az emulátor támogatják a 12 gombos numerikus bevitelt és az API által előírt IME_ACTION - öket, addig minderre a HTC Sense magasról tesz. Úgyhogy a tegnapi Pizza Calculator release elég csúnya véget ért.
Az API EditorInfo osztálya hét Action-t definiál. Ezek az akciók az Enter megnyomásával születnek, jellemzően minden akcióhoz tartozik egy felirat is, amely az Enter gombon jelenik meg, ha a fejlesztő a hagyományostól eltérő akciót adott meg. Ez a rendszer a szövegbevitel egyébként igen kellemetlen módját hivatott enyhíteni. Nézzünk néhány tipikus felhasználási módot!
Ha több mezőben szeretnénk egy soros szöveget bevitetni a felhasználóval, az IME_ACTION_NEXT a megfelelő eszköz. Ez az Entert egy Next gombbal helyettesíti, amivel a billentyűzet elrejtése vagy át-tapintás nélkül tudunk végiglépkedni a szövegmezőkön.
A pizzakalkulátorban egy mező editálásának eredményeképpen indul a számítás. Ezt fapadosan meg lehet oldani a mező után elhelyezett gombbal. De mennyivel kényelmesebb, ha a billentyűzet kínálja fel a Done funkciót! Ezt az IME_ACTION_DONE megadásával érhetjük el.
Ha a felületünk tartalmaz egy kereső-mezőt, és több más felületi elemet, akkor megtehetjük, hogy az IME_ACTION_SEARCH beállításábal jelezzük a felhasználónak, hogy az editálás befejeztével indul a keresés.
Természetesen ezekre az akciókra figyelni kell, nem automatikusak. Miután a layout XML-ben megadtuk a szövegdobozhoz elvárt beviteli akciót, egy OnEditorActionListener-t kell ráállítanunk a mezőre, hogy az eseményekre válaszolni tudjon az alkalmazás. Ha a felhasználó a vissza-gombbal tünteti el a billentyűzetet, akkor ilyen esemény nem generálódik. A szövegdoboz ott marad félig editálva.
Mindezek nem működnek maradéktalanul a 2.1-es HTC Sense billentyűzetével - Done-t kérve is az Enter gomb marad, annak teljes funkcionalitásával. Így kerülőutat kellett választanom, és egy OnKeyListener hozzáadásával az Enter billentyű lenyomását is figyelnem.
A történet tanulsága, hogy nem csak a képernyő-arányok változhatnak eszközről eszközre, hanem a ROM funkcionalitása is. Mivel a felhasználók általában nem rootolják a telefonjukat és nem töltenek fel "utángyártott" ROM-okat, ezért ha egy konkrét készülékre fejlesztünk, érdemes annak a gyári ROM-os változatával is ránézni legalább egyszer a felületre.