0

メニューボタンを押すと、時々メニューを表示するのではなく、トーストやダイアログなどのオプションを表示できるようにしたいと思います。

これを試しましたが、メニューキーが無効になっているときではなく、アクティビティが最初にロードされたときにonCreateOptionsMenuが呼び出されるため、もちろん機能しません。私がやろうとしていることをする方法はありますか?

@Override
public boolean onCreateOptionsMenu(Menu menu) {
   if (disableMenu())
      Toast.makeText(this, R.string.no_menu_for_you, Toast.LENGTH_LONG).show();
}

編集:人々がその部分に集中しないように.show()を追加しました。これが問題の原因ではありません。

4

5 に答える 5

3

あなたは電話するのを忘れましたshow()

 Toast.makeText(this, R.string.no_menu_for_you, Toast.LENGTH_LONG).show();

編集 :

あなたが望むようにcapture the click of a menu buttin、私はこれがうまくいくと思いますが、私はそれを試しませんでした:

protected boolean onKeyDown(int keyCode, KeyEvent event) {
     if (keyCode == KeyEvent.KEYCODE_MENU) {
         // When Menu Key is pressed
         Toast.makeText(this, R.string.no_menu_for_you, Toast.LENGTH_LONG).show();
         return true;
     }
     return false;
 }
于 2012-07-28T18:51:18.443 に答える
2

忘れてしまったので、メニューボタンを押すたびに呼び出されるを.show()使用する必要があります。onPrepareOptionsMenu

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
   super.onPrepareOptionsMenu(menu);

   if (disableMenu())
      Toast.makeText(this, R.string.no_menu_for_you, Toast.LENGTH_LONG).show();

   return true;
}
于 2012-07-28T18:56:59.870 に答える
1

として.show()表示するための呼び出しToast

Toast.makeText(this, R.string.no_menu_for_you, Toast.LENGTH_LONG).show();

それ以外の

Toast.makeText(this, R.string.no_menu_for_you, Toast.LENGTH_LONG);
于 2012-07-28T18:51:33.227 に答える
1

トーストでshow()を呼び出すのを忘れました。

これで問題が解決しない場合は、onCreateOptionsMenu(Menu menu)でtrueを返してから、onOptionsItemSelected(MenuItem item)でメニュー動作を実装してください。

于 2012-07-28T18:53:13.287 に答える
1

show()トーストを表示するために必要なメソッドを呼び出すのを忘れました。

また、メニューボタンでアクションを実行するには、次の方法を使用できます。

onKeyDown(int keyCode, KeyEvent event)私がしたようにメソッドをオーバーライドします。

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        switch (keyCode) 

        case KeyEvent.KEYCODE_MENU:

        Toast.makeText(getApplicationContext(),"Menu key Pressed", 3000).show();    

            break;  
        }


                return false;
    }
于 2014-07-16T10:15:44.550 に答える