单击弹出菜单中的一项时,如何使弹出菜单保持打开状态?

时间:2019-03-30 19:43:27

标签: java android

我在操作栏中有一个按钮,当我单击它时,它会显示一个包含项目的弹出菜单,我想防止在单击某个项目时关闭弹出窗口;这是我用于弹出窗口的代码:

 PopupMenu popup = new PopupMenu(this, popupButton);
 try {
     Field[] fields = popup.getClass().getDeclaredFields();
     for (Field field : fields) {
         if ("mPopup".equals(field.getName())) {
             field.setAccessible(true);
             Object menuPopupHelper = field.get(popup);
             Class<?> classPopupHelper = Class.forName(menuPopupHelper.getClass().getName());
             Method setForceIcons = classPopupHelper.getMethod("setForceShowIcon", boolean.class);
             setForceIcons.invoke(menuPopupHelper, true);
             break;
         }
     }
} catch (Exception e) {
     e.printStackTrace();
}

popup.getMenuInflater().inflate(R.menu.menu_story, popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {            
    //code             
    return true ;
});

2 个答案:

答案 0 :(得分:0)

如果您不希望单击后立即关闭弹出菜单,则需要创建自己的弹出窗口而不是标准弹出菜单。例如,基于AlertDialog

由于在documentation中,因此我不会给出代码示例。

答案 1 :(得分:-1)

popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {            
    //Your code   
    popup.show(); // Add this to show popup before returning true
    return true ;
});