【问题标题】:How do I get an item id from an action bar popup menu?如何从操作栏弹出菜单中获取项目 ID?
【发布时间】:2013-12-27 07:58:05
【问题描述】:

在操作栏中按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();
                }   

       }

   }

【问题讨论】:

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


    【解决方案1】:

    你的应用需要先实现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() 方法来监听弹出菜单的事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多