单击菜单图标时出现此错误:
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/