java - 没有 anchor 不能使用菜单弹出助手

标签 java android android-activity android-fragments

我想对操作栏中的菜单项使用弹出窗口。当我在 Activity 中使用它时一切正常但是当我切换到 fragment 时我得到:

MenuPopupHelper cannot be used without an anchor

我的 fragment :

@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): item 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(true);在 onCreateView() 中 viewonCreateView()

的膨胀布局

最佳答案

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

android:showAsAction="always"

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

关于java - 没有 anchor 不能使用菜单弹出助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24634136/

相关文章:

java - 如何使用java判断一天是否过去

android - 如何在Android中的另一个模块中调用一个Activity(属于一个模块)?

php - 为什么 getdata 函数对主要 Activity 起作用?

java - 将 Base 64 字符串保存为图像文件

java - Java中的字符序列化、BufferedReader

java - 尝试在 EditText 中将数字设置为文本

java - ListView 打开相同的 Activity

Android NDK 和 CPU 架构

java - MulticastSocket 可以发送但不能接收

android - 以编程方式将选择器 xml 资源设置为可绘制到 ImageView 不起作用