如何从操作栏弹出菜单中获取项目ID?

时间:2013-12-27 07:58:05

标签: android android-actionbar menuitem android-menu popupmenu

我在操作栏中按MenuItem后,无法访问弹出式菜单中的项目。换句话说,一旦我按下操作栏项目,我不知道如何从弹出菜单中获取项目的ID。 注意:public boolean onMenuItemClick(MenuItem item)不起作用。

     @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        // Handle presses on the action bar items

        if(item.getItemId()== R.id.action_settings) {
            openPopup();
        }
        return super.onOptionsItemSelected(item);
    }

        public void openPopup() {
            //find the settings button first
            View ActionItemView = findViewById(R.id.action_settings); 
            PopupMenu popupMenu = new PopupMenu(this, ActionItemView); 
            popupMenu.inflate(R.menu.popup);
            popupMenu.show();


       public boolean onMenuItemClick(MenuItem item)        {

            switch (item.getItemId())
                {
                case R.id.action_search:
                    openSearch();

                case R.id.PopupSettings:
                    openSettings();
                }   

       }

   }

1 个答案:

答案 0 :(得分:0)

您的应用程序需要首先实现PopupMenu.OnMenuItemClickListener接口,然后实现该接口中定义的方法onMenuItemClick()方法,如果您决定使用匿名类,则可以直接在onCreate()方法同样如此,您也不必使用implements关键字。

popMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {

    public boolean onMenuItemClick(MenuItem item) {
        switch (item.getItemId())
            {
            case R.id.action_search:
                openSearch();
                return true; //return true to indicate it was handled, false otherwise

            case R.id.PopupSettings:
                openSettings();
                return true;
            default:
                return false;
            }   
    });

每次用户选择一个选项时,您必须使用setOnMenuItemClickListener()在该菜单上设置回调方法,否则弹出窗口根本不会执行任何操作。基本上,必须实现setOnMenuClickListener()方法来监听弹出菜单的事件。