ポップアップメニューを作成しました。特定のアイテムを条件に応じてポップアップメニューから非表示にする必要があります。以下のコードを試してみましたが、機能せず、"アプリが予期せず停止しました"と表示されます。 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;
}
アイテムを取得する前に、PopupMenuからMenu
オブジェクトを取得する必要があります。だからそれは次のようなものになるでしょう
_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");