ユーザーがAndroidデバイスの「メニュー」キーを押したときを検出するにはどうすればよいですか?

戻るAPIが押されたかどうかを検出するために、より高いAPIレベルで onBackPressed()をオーバーライドすることができます。メニューボタンにも同様の方法がありますか?私はKeyEventsのキーコードを確認するのが大好きではありません。ありがとう!

3

2 答え

あなたはこれを探していますか?:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
        if (keyCode == KeyEvent.KEYCODE_MENU) {
            //do your work
            return true;
        }
        return super.onKeyDown(keyCode, event); 
    } 
16
追加された
ありがとう。私はこの方法を知っていましたが、私はキーコードをチェックする大きなファンではありません。 onBackPressed()と似たようなものが必要でしたが、 if(keyCode == KeyEvent.KEYCODE_BACK)ではありません。
追加された 著者 user1032613,
Activityソースコードの最初の数行を見ると、戻るボタンkeyCodeの後にonBackPressedが呼び出されます。 grepcode.com/ファイル/ repository.grepcode.com/java/ext /…
追加された 著者 Lior,
これはAPI 22でも引き続き使用できますか?ホームまたはメニューキーでイベントが発生しないアプリがあります。
追加された 著者 Alen Siljak,

メニューボタンのキーリスナーを作成する場合は、 onKeyDown とキーコードを確認してください。今すぐ、あなたはあなたが onPrepareOptionsMenu と呼ばれ、メニューボタンがクリックされ、メニューがユーザに表示されるたびに呼び出されます。 onCreateOptionsMenu メソッドを使用します。

5
追加された
@ bobbake4メニューが2回押されたときに聞く方法public void onOptionMenuClosed()が機能していません。
追加された 著者 Abhijit Chakra,
アンドロイド4.4.2でオプションメニューが定義されていないので、onPrepareOptionsMenuは、アクティビティが開始されたときにのみ呼び出され、再びアクティブになることはありません。
追加された 著者 velis,
それはうまくいかないはずです...私はこの答えに投票しました。私はあなたに私の答えを共有します
追加された 著者 Ahmad Arslan,
@velis invalidateOptionsMenu()またはsupportInvalidateOptionsMenu()の呼び出しを使用すると、メニューの再構築を実行できます。
追加された 著者 Bobbake4,
ありがとう、これは動作します。私は onCreateOptionsMenu()にメニューオブジェクトを展開し、 onOptionsItemSelected()をオーバーライドしました。
追加された 著者 user1032613,