我有一个
这是正确的行为吗,还是出现了问题?
更新:
谢谢大家,我的 onKeyDown 程序看起来像这样,现在我遵循了 CommonsWare 的建议:
onKeyDown
事件,仅用于处理应用程序中的上和下硬件键。对于这些键,它返回 true,因为它们已被处理。对于其他任何键,它都返回 false,我理解这意味着操作系统应该处理它们。但是,当我按 Back 按钮时,我的 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'。如果 super.onKeyDown 运行 Activity 的 onKeyDown,则我可能不想在开头添加它,只有在我的例程未处理它时才添加,这是我添加的内容。这样说是否正确,还是我还是困惑了?
-Frink