Tengo un evento onKeyDown
que solo es necesario para manejar las teclas de arriba y abajo de mi aplicación. Para estos devuelve verdadero, ya que se manejan. Para cualquier otra cosa, devuelve falso, lo que entiendo significa que el sistema operativo debe manejarlos. Sin embargo, cuando presiono el botón Atrás, se llama a mi onKeyDown
y devuelve falso, pero no hay otro efecto. Quiero/espero que el sistema operativo termine el actual Activity
y reanude el anterior.Manejo del hardware de Android Botón Atrás
¿Es este comportamiento correcto, o hay algo amis?
Actualización:
Saludos muchachos, mis miradas de rutina onKeyDown como este, ahora que he seguido el consejo 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);
}
Mi clase se parece a:
public class Map extends Activity implements OnClickListener, SurfaceHolder.Callback, OnTouchListener {
debo admitir No sabía por qué la @override y la primera línea 'super' estaban allí, solo estaban en todas las rutinas que vi. Si el super.onKeyDown ejecuta el onKeyDown para la actividad, entonces probablemente no lo desee al principio, solo al final si mi rutina no lo maneja, que creo que es lo que he agregado. ¿Eso suena correcto o todavía estoy confundido?
-Frink
¿Está intentando esto en una vista web? – Sephy
Publica tu código. – Falmarri