在OptionsMenu上单击侦听器

时间:2013-05-13 08:27:14

标签: java android android-optionsmenu

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

2 个答案:

答案 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);
}