Скрыть элемент из popupmenu

Я создал всплывающее меню. Мне нужно скрыть определенный элемент из всплывающего меню при условии, я пробовал этот ниже код, но он не работает и показывает "неожиданно ваше приложение было остановлено". Я использовал 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;

    }

Ответы

Ответ 1

Вам нужно получить объект Menu из PopupMenu, прежде чем вы получите элемент. Так что это будет что-то вроде

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()

Ответ 2

Этот ответ помогает кому-то,

Я использую

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

Если вы хотите изменить текст меню, вы можете использовать ниже код,

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