从popup菜单中隐藏项目

我创建了一个popup菜单。 我需要在条件下隐藏popup菜单中的特定项目,我尝试了下面的代码,但它不起作用,并显示“意外地你的应用程序已被停止” 。 我使用了findViewByIdsetEnabled(false)

还有其他方法可以隐藏popup菜单中的项目吗? 请帮忙。

  @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub switch(item.getItemId()){ case R.id.addMessage_Action: AddMessage(); break; case R.id.dropMenuAction: menuItemView = findViewById(R.id.dropMenuAction); PopupMenu popup = new PopupMenu(this, menuItemView); MenuInflater inflater = popup.getMenuInflater(); inflater.inflate(R.menu.popupmenu_for_message_delete, popup.getMenu()); popup.show(); popup.setOnMenuItemClickListener(this); if(Global.lock == true) findViewById(R.id.lock_message).setEnabled(false); else findViewById(R.id.unlock_message).setEnabled(false); break; } return false; } 

在获得项目之前,您需要从PopupMenu获取Menu对象。 所以它就像是

 Menu popupMenu = popup.getMenu(); if(Global.lock == true) popupMenu.findItem(R.id.lock_message).setEnabled(false); else popupMenu.findItem(R.id.unlock_message).setEnabled(false); 

在调用popup.show()之前我popup.show()

这个答案可能对某人有帮助,

我在下面用过

 popupMenu.getMenu().findItem(R.id.next).setVisible(true); 

如果要更改菜单文本,可以使用以下代码,

 popupMenu.getMenu().findItem(R.id.next).setTitle("After");