studio mainactivity example contextual context android popupmenu

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");