首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >菜单弹出助手不能在没有锚的情况下使用

问菜单弹出助手不能在没有锚的情况下使用
EN

Stack Overflow用户
提问于 2014-07-08 14:15:38
回答 2查看 6.1K关注 0票数 5

我想要使用弹出的菜单项在行动栏。当我在活动中使用它时,一切都很好,但是当我切换到片段时,我得到:

代码语言:javascript
复制
MenuPopupHelper cannot be used without an anchor

我的碎片:

代码语言:javascript
复制
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    
    switch(item.getItemId()) {
        case R.id.action_filter:
            createCategoriesPopupMenu(item);
            return true;
        case R.id.action_sort:
            createSortPopupMenu(item);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}


private void createSortPopupMenu(MenuItem item)
{
    PopupMenu popup;
    
    final View menuItemView = getView().findViewById(item.getItemId());
    
    Log.wtf("d","item getitemid"+item.getItemId());
    
    if (menuItemView == null)
    {
        Log.wtf("d","menuItemView==null view"+view.findViewById(item.getItemId()));
        Log.wtf("d","menuItemView==null getAc"+getActivity().findViewById(item.getItemId()));
        
        //final View searchItemView = getView().findViewById(R.id.action_search);
        //popup = new PopupMenu(getActivity(), searchItemView);
    }

        popup = new PopupMenu(getActivity(), menuItemView);

    Menu menu = popup.getMenu();
    
    addSortMenuItems(menu);

    popup.setOnMenuItemClickListener(new OnMenuItemClickListener()
    {
        @Override
        public boolean onMenuItemClick(MenuItem item)
        {
            onSortMenuItemClick(item);
            return true;
        }
    });

    popup.show();
}   
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.issues_list_menu, menu);

    super.onCreateOptionsMenu(menu, inflater);
}

控制台输出(断言):

07-08 14:08:16.659: A/d(1677):项目getitemid2131165600 07-08 14:08:16.659: A/d(1677):menuItemView==null viewnull 07-08 14:08:16.663: A/d(1677年):menuItemView==null getAcnull

我没有忘记setHasOptionsMenu(真);在onCreateView()和view中是onCreateView()的充气布局

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-08 14:41:23

好的,我在xml菜单文件中找到了解决方案,我们想要在项目中添加弹出,我们需要设置

代码语言:javascript
复制
android:showAsAction="always"

因为弹出窗口只适用于操作栏中的图标,而不是菜单中的图标。也可以使用getActivity().findView..。不是getView().findView。

票数 14
EN

Stack Overflow用户

发布于 2019-09-25 20:01:27

你可以改变

final View menuItemView = getView().findViewById(item.getItemId());

至

final View menuItemView = getActivity().findViewById(item.getItemId());

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24634136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档