La manipulation Android bouton de Retour
J'ai un onKeyDown
événement qui est seulement nécessaire pour la manutention, le Haut et Bas touches matérielles dans mon application. Pour ces elle renvoie true, comme ils sont traités.
Pour tout le reste il renvoie faux que je comprends, cela signifie que le système d'exploitation doit gérer.
Cependant, lorsque j'appuie sur le bouton de Retour, mon onKeyDown
est appelé et renvoie la valeur false, mais il n'y a pas d'autre effet. Je veux attendre que l'OS fini le courant Activity
et de reprendre la précédente.
Est ce comportement correct, ou est-il quelque chose d'amis?
Mise à jour:
Cheers les gars, mon onKeyDown routine ressemble à ça, maintenant, j'ai suivi CommonsWare conseils:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
super.onKeyDown(keyCode, event);
boolean handled = true;
//handle key presses
switch (keyCode) {
case KeyEvent.KEYCODE_DPAD_LEFT:
mCursorX = mCursorX - 1;
if (mCursorX < MAP_MIN_X) { mCursorX = MAP_MIN_X; }
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
mCursorX = mCursorX + 1;
if (mCursorX > MAP_MAX_X) { mCursorX = MAP_MAX_X; }
break;
default:
handled = false;
if (handled) {
redrawCursorno();
return true;
}
return super.onKeyDown(keyCode,event);
}
Ma classe ressemble à:
public class Map extends Activity implements OnClickListener, SurfaceHolder.Callback, OnTouchListener {
Je dois avouer que je ne sais pas pourquoi le @override et le premier "super" ligne étaient là, ils étaient juste dans toutes les routines j'ai regardé.
Si le super.onKeyDown exécute le onKeyDown pour l'Activité, puis j'ai probablement ne veux pas de ça au début, seulement à la fin si ma routine ne pas s'en occuper, je pense que c'est ce que j'ai ajouté.
Est-ce que son sujet de droit, ou suis-je encore confus?
-Frink
Poster votre code.
OriginalL'auteur FrinkTheBrave | 2010-08-22
Vous devez vous connecter pour publier un commentaire.
Je recommanderais le chaînage de la super-classe. En d'autres termes, au lieu de:
faire:
OriginalL'auteur CommonsWare
Vous pouvez remplacer le onBackPressed() la méthode, il sera appelée lorsque l'activité a détecté de l'utilisateur appuyez sur la touche retour. Dans ce cas, vous n'avez pas besoin d'utiliser la méthode onKeyDown.
onBackPressed()
ne sera pas appelé sans le modifier pour retourner la valeur desuper.onKeyDown()
OriginalL'auteur Karan
Aussi, vous êtes à l'appel à super.onKeyDown() deux fois: une fois au début de la fonction et une fois à la fin. Vous devriez seulement besoin de l'autre à la fin.
OriginalL'auteur joeo