Android 从弹出菜单中隐藏项目
我创建了一个弹出菜单。我需要隐藏一个特定的项目从弹出菜单的条件,我尝试了下面的代码,但它不工作,并显示“出乎意料地你的应用程序已停止”。我使用了Android 从弹出菜单中隐藏项目,android,popupmenu,Android,Popupmenu,我创建了一个弹出菜单。我需要隐藏一个特定的项目从弹出菜单的条件,我尝试了下面的代码,但它不工作,并显示“出乎意料地你的应用程序已停止”。我使用了findViewById和setEnabled(false) 有没有其他方法可以从弹出菜单中隐藏项目?请帮忙 @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO Auto-generated method stub swit
findViewById
和setEnabled(false)
有没有其他方法可以从弹出菜单中隐藏项目?请帮忙
@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;
}
在获取项目之前,需要从弹出菜单中获取
菜单
对象。所以会是这样的
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()之前,我会这样做。这个答案可能对某人有帮助 我在下面用过
popupMenu.getMenu().findItem(R.id.next).setVisible(true);
如果要更改菜单的文本,可以使用以下代码
popupMenu.getMenu().findItem(R.id.next).setTitle("After");
Logcat怎么说?findViewById(R.id.lock_message).setEnabled(false);
getItem
需要索引作为参数,而findItem
需要id。因此示例应该类似于popupMenu.findItem(R.id.lock_message).setEnabled(false)代码>你说得对,谢谢你的更正。更新了原始帖子。popupMenu.findItem(R.id.lock_消息)。setVisible(false)代码>将生效。:)我一直在寻找这样的方法,直到今天我才找到它。在我的弹出菜单中像一个魔咒一样工作,按id查找项目。非常感谢用户Tim。