Fri*_*ave 8 android back-button
我有一个onKeyDown事件只需要处理我的应用程序中的Up和Down硬件键.对于这些,它返回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);
}
Run Code Online (Sandbox Code Playgroud)
我的班级看起来像:
public class Map extends Activity implements OnClickListener, SurfaceHolder.Callback, OnTouchListener {
Run Code Online (Sandbox Code Playgroud)
我必须承认我不知道为什么@override和第一个'超级'线在那里,它们只是在我看到的所有例程中.如果super.onKeyDown为Activity运行onKeyDown,那么我可能不希望它在开始时,只在最后如果我的例程不处理它,我认为这是我添加的.这听起来是对的,还是我仍然困惑?
-Frink
我建议链接到超类.换句话说,而不是:
return(false);
Run Code Online (Sandbox Code Playgroud)
做:
return(super.onKeyDown(...));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11090 次 |
| 最近记录: |