android - mainactivity - popup menu java
Ocultar elemento de popupmenu (2)
He creado un menú emergente. Necesito ocultar un elemento en particular del menú emergente con la condición, probé este código a continuación, pero no funciona y muestra "inesperadamente su aplicación se ha detenido" . Utilicé findViewById
y setEnabled(false)
.
¿Hay alguna otra manera de ocultar un elemento del menú emergente? Por favor ayuda con esto.
@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;
}
Debe obtener el objeto de menú del menú emergente antes de obtener el elemento. Entonces sería algo así como
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);
Y lo haría antes de llamar a popup.show()
Esta respuesta puede ser útil para alguien,
Utilicé abajo
popupMenu.getMenu().findItem(R.id.next).setVisible(true);
Si desea cambiar el texto del menú, puede utilizar el siguiente código,
popupMenu.getMenu().findItem(R.id.next).setTitle("After");