我有一个onKeyDown
事件,只需要在我的应用程序中处理向上和向下硬件键。对于这些,它在处理时返回 true。对于其他任何事情,它都会返回 false,我理解这意味着操作系统应该处理它们。但是,当我按下后退按钮时,onKeyDown
调用 my 并返回 false,但没有其他效果。我希望/希望操作系统完成当前Activity
并恢复上一个。
这是正确的行为,还是有什么不对?
更新:
干杯伙计们,我的 onKeyDown 例程看起来像这样,现在我遵循了 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);
}
我的课看起来像:
public class Map extends Activity implements OnClickListener, SurfaceHolder.Callback, OnTouchListener {
我必须承认我不知道为什么@override 和第一个“超级”行在那里,它们只是在我查看的所有例程中。如果 super.onKeyDown 为 Activity 运行 onKeyDown,那么我可能一开始就不想要它,只有在我的例程不处理它的时候才想要它,我认为这是我添加的。这听起来是对的,还是我仍然感到困惑?
-弗林克