java - 我需要在给定条件下从弹出菜单中隐藏/显示特定项目

标签 java android

我试过了 this solution ,但它没有像我预期的那样工作。
这是我的代码,这是我试过的。

PopupMenu popup = new PopupMenu(TableActivity.this, view);
              popup.setOnMenuItemClickListener(TableActivity.this);
              menu = popup.getMenu();
              popup.inflate(R.menu.popup_shift);
              popup.show();
              popup.setOnMenuItemClickListener(this);

    @Override
     public boolean onMenuItemClick(MenuItem item) {
            switch (item.getItemId()) {
                case R.id.menu_merge:
                    if(tableDbList.get(positionShift).getMergeTableId()== 0) {     
                      //this is the condition to show/hide popup menuitem  
                         popup.getMenu().findItem(R.id.menu_merge).setVisible(false);
                    }else {   
                    checkPinCode.checkPinCodemethod(TableActivity.this,   "mergeCancel");
                    }
         }
     return true;
    }

最佳答案

您正在尝试更改MenuItem 上的可见性 单击 。它会工作,但 popupMenu 将在点击后立即消失。所以这没有任何意义。 如果您的要求是在某些情况下显示项目,您应该在 show() 之前设置可见性。下面是一个简单的例子。

  private void showPopup() {
    final PopupMenu popup = new PopupMenu(MainActivity.this, view);
    popup.getMenuInflater().inflate(R.menu.popup_shift, popup.getMenu());
    if(someCondition){
        popup.getMenu().findItem(R.id.menu_merge).setVisible(false);
    }
    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
        public boolean onMenuItemClick(MenuItem item) {
            Toast.makeText(MainActivity.this, "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show();
            return true;
        }
    });
    popup.show();
}

关于java - 我需要在给定条件下从弹出菜单中隐藏/显示特定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50084354/

相关文章:

java - 如何检查 Spring Data Cassandra Mapper 生成的查询字符串

java - 小程序 Java 7 更新 21 : Cannot set AWTKeyListener on default Toolkit

java - pdf clown - 不突出显示特定搜索关键字

android - 在android中合并音频文件不起作用

android - 如何隐藏微调器下拉菜单android

android - java.lang.IllegalArgumentException : Navigation destination that matches request NavDeepLinkRequest 异常

java - Android:Parcelable ClassNotFound 解码崩溃

java - 微调器禁用滑动打开

android - 更改图库中的边框样式

java - JSF bean 访问失败