Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从弹出菜单中隐藏项目_Android_Popupmenu - Fatal编程技术网

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。