我只想在选项菜单中切换我的滑动菜单,但还没有找到选项按钮的标准点击监听器。 OnPrepareOptionsMenu是单击选项按钮时触发的唯一方法吗?我真的不想使用这种方法,因为在应用程序启动时也会触发此方法。
答案 0 :(得分:1)
更新:对于菜单按钮(硬件按钮),您可以使用事件onKeyUp:
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
if (event.getAction() == KeyEvent.ACTION_UP)
{
Log.d("onkeyup", "onkeyup");
return true;
}
}
return super.onKeyUp(keyCode, event);
}
注意:以下解决方案适用于ActionBar
只需覆盖onOptionsItemSelected
功能即可。
然后,您可以在所有菜单项上侦听click事件,并根据案例触发所需的操作:
以下是主要活动类的示例:
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()) {
case R.id.menu_calendar:
makeToast("Loading...");
openCalendar();
break;
case R.id.menu_search:
makeToast("Loading...");
openSearch();
break;
case R.id.menu_settings:
openSettings();
break;
case R.id.menu_help:
openHelp();
break;
case R.id.menu_about:
mBackupManager.dataChanged();
openAbout();
break;
}
return true;
}
答案 1 :(得分:1)
您需要Override
菜单按钮,这样当用户点击“菜单”时,您的代码就会执行而不是打开菜单。就像这样
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ( keyCode == KeyEvent.KEYCODE_MENU ) {
//Put the code for an action menu from the top here
return true;
}
return super.onKeyDown(keyCode, event);
}