我在特定事件发生后动态地膨胀菜单项。但是菜单项不可见。
以下是代码:
LocalBroadcastManager.getInstance(context).registerReceiver(new BroadcastReceiver() {
@Override public void onReceive (Context context, Intent intent){
appCompatActivity.supportInvalidateOptionsMenu();
setHasOptionsMenu(true);
setUpdateText();
appCompatActivity.invalidateOptionsMenu();
}
}, new IntentFilter(UPDATE_ACTION));
void setUpdateText() {
if (mainMenu != null) {
mainMenu.findItem(R.id.notificationdevicemenu).setVisible(true);
mainMenu.findItem(R.id.notificationdevicemenu).setEnabled(true);
}
}
我正在给下面的菜单充气:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
mainMenu=menu;
menu.clear();
try {
inflater.inflate(R.menu.main_list_fragment, mainMenu);
} catch (Exception e) {
e.printStackTrace();
}
}
任何人都可以告诉我为什么菜单不可见。任何形式的帮助将不胜感激。
答案 0 :(得分:0)
无效选项菜单将触发onPrepareOptionsMenu()
,而不是onCreateOptionsMenu()
,它被调用一次(第一次显示选项菜单)。覆盖{{1}}并从那里执行必要的更改。