Lunar Landerサンプルに基づいて簡単なアンドロイドゲームを作成しましたが、キーイベントの処理に問題があります。アクティビティが開始されると、onKeyDownまたはonKeyUpが呼び出される唯一のキーは、dpadの上/下/左/右キーです。 menu、back、またはdpad_centerのいずれのキーもonKeyメソッドをトリガーしません。ただし、dpadの上/下/左/右ボタンのいずれかを押した後で、メニュー、戻る、またはdpad_centerキーを押すと、これらのメソッドがトリガされます。私は間違いや何が起こっているのかの兆候は見られません。onKeyDownはAndroidアプリでは必ずしも呼び出されません
フォーカスが間違っている可能性があります。アクティビティは画面のボタンから開始されるため、タッチスクリーンモードになる可能性があります。それが事実なら、バックボタンに触れて右のフォーカスモードに入ってはいけないので、私はイベントをキャッチできますか?
SDK-1.5r3のエミュレータを使用しています。私はまだ実際の電話でこれを試すことができませんでした。ここに私のonKeyDownがあります。ビューまたは活性におけるこのonKeyDownメソッドは
public boolean onKeyDown(int keyCode, KeyEvent msg)
{
Log.d(TAG, "onKeyDown: " + keyCode);
return super.onKeyDown(keyCode, msg);
}
おかげ
マット
これは、ビューにあった - しかし、これを確認しながら、私はsetFocusableInTouchModeが有効になっていないことに気付きました - で問題を修正することを追加します。 –
ああ、冷たい。申し訳ありませんが、私は実際の問題を逃しましたが、私は助けることができてうれしいです。 – haseman
私はこれをフラグメントで試しましたが、フォーカスの可能性をtrueに設定していても、私のビューのonKeyDown()は呼び出されません。 'searchView.setFocusable(true); searchView.setFocusableInTouchMode(true); '。残念ながら、アクティビティのonKeyDown()は呼び出されますが、バックキーには呼び出されません。 – faizal