0

我只是想通过选项菜单来切换我的滑动菜单,但还没有找到选项按钮的标准点击监听器。OnPrepareOptionsMenu 是单击选项按钮时唯一触发的方法吗?我真的不想使用这个方法,因为这个方法也会在应用程序启动时被触发。

4

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