Android - 单击菜单按钮时显示Toast或其他行为

时间:2012-07-28 18:49:14

标签: android android-ui android-menu

如果按下菜单按钮,我希望能够显示吐司或对话框或其他选项,而不是有时显示菜单。

我试过这个,但当然它不起作用,因为在首次加载Activity时调用onCreateOptionsMenu,而不是在禁用Menu键时调用。有没有办法做我想做的事情?

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

编辑:我添加了.show(),以便人们不会专注于那部分。这不是造成这个问题的原因。

5 个答案:

答案 0 :(得分: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;
 }

答案 1 :(得分: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;
}

答案 2 :(得分: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);

答案 3 :(得分:1)

你忘记在吐司上打电话给show()。

如果这无助于尝试在onCreateOptionsMenu(菜单菜单)中返回true 然后在onOptionsItemSelected(MenuItem item)中实现菜单行为。

答案 4 :(得分: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;
    }