如果按下菜单按钮,我希望能够显示吐司或对话框或其他选项,而不是有时显示菜单。
我试过这个,但当然它不起作用,因为在首次加载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(),以便人们不会专注于那部分。这不是造成这个问题的原因。
答案 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;
}