【问题标题】:PopupMenu onMenuItemClick not being called未调用 PopupMenu onMenuItemClick
【发布时间】:2019-12-11 08:40:16
【问题描述】:

我有一个类 AddPhotoMenu

public class AddPhotoMenu extends PopupMenu implements PopupMenu.OnMenuItemClickListener {
    public AddPhotoMenu(Context context, View anchor) {
        super(context, anchor);
    }

    @Override
    public boolean onMenuItemClick(MenuItem item) {
        Log.d(TAG, "onMenuItemClick: Called");
        switch (item.getItemId()) {
            case R.id.popup_menu_fragevent_takephoto:
                //Inflate a layout
                Log.d(TAG, "onMenuItemClick: Take photo");

                break;
            case R.id.popup_menu_fragevent_selectphotos:
                //Inflate a layout

                Log.d(TAG, "onMenuItemClick: Select photo");
                break;

        }
        return false;
    }
}

我创建了它的一个新实例,但是当我单击菜单项时永远不会调用 onMenuItemClick 方法。

AddPhotoMenu addPhotoMenu = new AddPhotoMenu(this, mAddPhotosButton1);
addPhotoMenu.inflate(R.menu.popup_menu_fragevent_addphotos);
addPhotoMenu.show();

导致问题的原因是什么?

编辑:__________________________________________________

菜单的XML

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/popup_menu_fragevent_takephoto"
        android:title="Take a photo"/>

    <item
        android:id="@+id/popup_menu_fragevent_selectphotos"
        android:title="Select photos"/>

</menu>

【问题讨论】:

  • 你得到一个错误?什么错误?
  • 我的错不是错误。一个问题*。我不知道为什么没有调用 onMenuItemClick
  • 您也可以发布您的菜单代码吗? XML 那个?

标签: android popupmenu


【解决方案1】:

这样试试

@Override
public boolean onMenuItemClick(MenuItem item) {
     Log.d(TAG, "onMenuItemClick: Called");
     switch (item.getItemId()) {
         case R.id.popup_menu_fragevent_takephoto:
             //Inflate a layout
             Log.d(TAG, "onMenuItemClick: Take photo");

             return true; // return true instead of break
         case R.id.popup_menu_fragevent_selectphotos:
             //Inflate a layout

             Log.d(TAG, "onMenuItemClick: Select photo");
             return true; // return true instead of break

        }
return false;
}

更新:

您必须将MenuItemClickListener 设置为您的弹出菜单,如下所示。

AddPhotoMenu addPhotoMenu = new AddPhotoMenu(this, mAddPhotosButton1);
addPhotoMenu.inflate(R.menu.popup_menu_fragevent_addphotos);

addPhotoMenu.setOnMenuItemClickListener(addPhotoMenu); // add this line

addPhotoMenu.show();

【讨论】:

  • 它仍然没有被调用
【解决方案2】:

您的 PopupMenu.OnMenuItemClickListener 应该在您实例化 PopupMen 的 Activity 或 Fragment 中实现。 之后应该调用addPhotoMenu.setOnMenuItemClickListener(this),其中“this”代表您的 Fragment 或 Activity。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 2012-03-29
    • 1970-01-01
    相关资源
    最近更新 更多