Скрыть элемент из 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");