android - 如果没有 onBindViewHolder 内的 anchor ,则不能使用 MenuPopupHelper

标签 android android-cardview android-viewholder

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

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();
}

点击我的图片按钮时出现此错误的任何想法?

最佳答案

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

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

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

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

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

关于android - 如果没有 onBindViewHolder 内的 anchor ,则不能使用 MenuPopupHelper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42885384/

相关文章:

android - 改变卡片的背景 (Android cardView)

android - 如何增加或减少listview每一行中edittext的值?

java - 如何让多个 ListView 响应不同的 onItemClickListener?

android - CardView 海拔未显示在 Lollipop 和更高版本中

android - MaterialCardView 内的 subview 缩小并消失

android - 在 Recyclerview 中滚动后 Imageview 不在正确的行上

android - 带有自定义 ArrayAdapter(和 getView 回收)的 ListViewText 中用于 EditText 的 TextWatcher

java - "W/AudioFlinger( 34): write blocked for 70 msecs, 2236 delayed writes, thread "是什么意思?

Android:覆盖按钮的 onKeyListener 的问题

android - 如何更改 viewpager 中每个 fragment 的点指示器( Activity 和非 Activity )的颜色?