J'ai un événement onKeyDown
qui est seulement nécessaire pour manipuler les touches matérielles Haut et Bas dans mon application. Pour ceux-ci, il retourne vrai, car ils sont manipulés. Pour toute autre chose, il renvoie faux ce que je comprends signifie que le système d'exploitation devrait les gérer. Cependant, lorsque j'appuie sur le bouton Retour, mon onKeyDown
est appelé et renvoie false, mais il n'y a pas d'autre effet. Je veux/je m'attendrais à ce que le système d'exploitation termine le Activity
actuel et reprenne le précédent.Gestion du matériel Android Bouton Précédent
Est-ce un comportement correct, ou y at-il quelque chose d'amis?
Mise à jour:
Vive les gars, ma routine onKeyDown ressemble à ceci, maintenant je l'ai suivi les conseils de CommonsWare:
@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 admettre Je ne savais pas pourquoi le @override et la première 'super' ligne étaient là, ils étaient juste dans toutes les routines que je regardais. Si le super.onKeyDown exécute le onKeyDown pour l'activité, alors je ne le veux probablement pas au début, seulement à la fin si ma routine ne le gère pas, ce que je pense est ce que j'ai ajouté. Cela vous semble-t-il exact ou suis-je encore confus?
-Frink
essayez-vous cela sur un webview? – Sephy
Postez votre code. – Falmarri