我只是想通过选项菜单来切换我的滑动菜单,但还没有找到选项按钮的标准点击监听器。OnPrepareOptionsMenu 是单击选项按钮时唯一触发的方法吗?我真的不想使用这个方法,因为这个方法也会在应用程序启动时被触发。
问问题
1130 次
2 回答
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
功能。然后就可以监听所有菜单项的点击事件,根据情况触发你想要的动作:
这是一个主要活动类的示例:
@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;
}
于 2013-05-13T08:39:05.017 回答
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);
}
于 2013-05-13T08:47:42.380 回答