【问题标题】:MenuPopupHelper cannot be used without an anchor inside onBindViewHolder如果没有 onBindViewHolder 内的锚点,则无法使用 MenuPopupHelper
【发布时间】:2017-08-10 15:44:26
【问题描述】:

单击菜单图标时出现此错误:

java.lang.IllegalStateException: MenuPopupHelper cannot be used without an anchor

我有这个代码:

@Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {

...

holder.imageButtom.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showPopup(holder.imageButtom, position, post.getPid());
            }
        });

和显示弹出窗口

private void showPopup(View view, final int position, final String id) {
    View menuItemView = view.findViewById(R.id.card_view);
    PopupMenu popup = new PopupMenu(context, menuItemView);
    MenuInflater inflate = popup.getMenuInflater();
    inflate.inflate(R.menu.cardview_menu, popup.getMenu());
    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {
            switch (item.getItemId()) {
                case R.id.delete_id:
                    Posts.remove(position);
                    notifyItemRemoved(position);
                    // do what you need.
                    break;
                default:
                    return false;
            }
            return false;
        }
    });
    popup.show();
}

任何想法为什么当我单击我的图像按钮时会出现此错误?

【问题讨论】:

    标签: android android-cardview android-viewholder


    【解决方案1】:

    我假设您在调用 showPopup(View view, final int position, final String id) 时传递了错误的 View。一旦showPopup 被调用,你就会找到一个特定的视图ID,即R.id.card_view

    View menuItemView = view.findViewById(R.id.card_view);
    

    您通过传递 ImageButton 本身来调用它

    showPopup(holder.imageButtom, position, post.getPid());
    

    我猜测问题的根本原因。我认为您打算传递不同的视图,其中包含您在 showPopup 中查看的卡片视图 (R.id.card_view)。

    【讨论】:

    • 非常感谢您的回答,我会根据您的回答尝试更改。
    • 没问题。我很确定您给出了错误的视图,因此在尝试查找特定卡片视图时没有获得视图(在这种情况下为锚点)。不过,如果我的发现真的有效,请告诉我。
    猜你喜欢
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多