0

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

我试过这个,但当然它不起作用,因为 onCreateOptionsMenu 是在第一次加载 Activity 时调用的,而不是在禁用菜单键时。有什么办法可以做我想做的事吗?

@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() 了。

如果这无济于事,请尝试在 onCreateOptionsMenu(Menu menu) 中返回 true,然后在 onOptionsItemSelected(MenuItem item) 中实现您的菜单行为。

于 2012-07-28T18:53:13.287 回答
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()显示吐司所需的方法。

并且要对菜单按钮执行任何操作,您可以使用以下方式。

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 回答