onKeyDownアプリで Up および Down ハードウェア キーを処理するためにのみ必要なイベントがあります。これらについては、処理されると true が返されます。それ以外の場合は、OSがそれらを処理する必要があることを意味するfalseを返します。ただし、[戻る] ボタンを押すと、 myonKeyDownが呼び出されて false が返されますが、それ以外の効果はありません。ActivityOSが現在のものを終了し、前のものを再開することを望んでいます/期待します。
これは正しい動作ですか、それとも何か問題がありますか?
アップデート:
乾杯、私の 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 がアクティビティの onKeyDown を実行する場合、おそらく最初は必要ありません。ルーチンがそれを処理しない場合にのみ、最後に追加したと思います。それは正しいように聞こえますか、それともまだ混乱していますか?
-フリンク