Android 弹出菜单未加载菜单

Android popup menu is not loading menu

在我的 android 应用程序中,我有一个菜单选项,当设备具有专用的硬件菜单选项时,该选项可以使用。对于另一台设备,我没有专用的菜单按钮,所以我尝试添加一个按钮,然后单击该按钮,弹出窗口将显示菜单,弹出窗口正在运行但不显示选项,进一步说明如何在所选上工作弹出选项。

我的按钮布局如下:

<ImageButton
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/ic_overflow_holo_dark"
    android:contentDescription="@string/descr_overflow_button"
    android:onClick="showPopup" />

这是我显示弹出窗口的代码:

public boolean showPopup(View v) {
    PopupMenu popup = new PopupMenu(this, v);
    MenuInflater inflater = popup.getMenuInflater();
    inflater.inflate(R.menu.emailmenu, popup.getMenu());
    popup.show();
    return true;
} 

这是我的 option 代码:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/bluebutton" android:icon="@drawable/icon_blue_btn"
        android:title="" />
    <item android:id="@+id/zephyr" android:icon="@drawable/icon_zephyrme"
        android:title="" />
    <item android:id="@+id/skype" android:icon="@drawable/icon_skype"
        android:title="" />
</menu>

我已经准备好这个 onCreateOptionsMenu() 来触发专用菜单键的选项。如何通过弹出窗口使其工作。

像这样尝试

PopupMenu popup = new PopupMenu(MainActivity.this, button1);
 popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu());
 popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            @Override
            public boolean onMenuItemClick(MenuItem item) {
                startActivity(new Intent(MainActivity.this, SecounActivity.class));
                return true;
            }
        });
popup.show();

如果您想显示图标而不是标题,请像下面这样创建您的PopupMenu

方法setForceShowIcon(menu); 将强制PopMenu 显示图标。 你也可以有带图标的文字。

private void showPopupMenu(){
    PopupMenu menu=new PopupMenu(this,anchorView);
    menu.getMenuInflater().inflate(R.menu.popup_menu,menu.getMenu());
    setForceShowIcon(menu);
    menu.setOnMenuItemClickListener(menuClickListner);
    menu.show();
}

 public static void setForceShowIcon(PopupMenu popupMenu) {
    try {
        Field[] fields = popupMenu.getClass().getDeclaredFields();
        for (Field field : fields) {
            if ("mPopup".equals(field.getName())) {
                field.setAccessible(true);
                Object menuPopupHelper = field.get(popupMenu);
                Class<?> classPopupHelper = Class.forName(menuPopupHelper
                        .getClass().getName());
                Method setForceIcons = classPopupHelper.getMethod(
                        "setForceShowIcon", boolean.class);
                setForceIcons.invoke(menuPopupHelper, true);
                break;
            }
        }
    } catch (Throwable e) {
        e.printStackTrace();
    }
}
//This is Menu click listner
PopupMenu.OnMenuItemClickListener menuClickListner = new PopupMenu.OnMenuItemClickListener() {
    @Override
    public boolean onMenuItemClick(MenuItem item) {
        switch (item.getItemId()){
            case R.id.some_id1:
                //actions here
                break;
            case R.id.some_id2:
                //actions here..
                break;
            case R.id.some_id3:
                break;
           }
        return false;
    }
};

希望对您有所帮助!