【发布时间】:2011-04-02 05:41:15
【问题描述】:
我有一个 onKeyDown 事件,它仅用于处理我的应用程序中的向上和向下硬件键。对于这些,它在处理时返回 true。
对于其他任何事情,它都会返回 false,我理解这意味着操作系统应该处理它们。
但是,当我按下返回按钮时,我的onKeyDown 被调用并返回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,那么我可能一开始就不想要它,只有在我的例程不处理它的时候才想要它,我认为这是我添加的。 这听起来是对的,还是我仍然感到困惑?
-弗林克
【问题讨论】:
-
你是在 webview 上尝试这个吗?
标签: android back-button