Я уже давно застрял в этой проблеме. В моем коде у меня есть фрагмент, внутри которого я не хочу показывать пункт меню поиска. Для того, чтобы добиться того, что я делаю это внутри фрагментаMenuItem, скрытый во фрагменте, невидимый при выполнении setVisible (true) в основной деятельности
Внутри onCreate
setHasOptionsMenu(true);
Тогда
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
this.menu = menu;
MenuItem search = menu.findItem(R.id.action_search);
search.setVisible(false);
}
Это работает точно так, как ожидалось, и скрывает элемент. Теперь, когда я делаю назад нажмите о nBackPressed()
основной деятельности называется и там я это сделать
@Override
public void onBackPressed() {
// code skipped
invalidateOptionsMenu();
}
Это вызывает onCreateOptionsMenu
внутри основной деятельности, которая заключается в следующем
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
item = menu.findItem(R.id.action_search);
item.setVisible(true);
//code skipped
}
onCreateOptionsMenu
функция но, к сожалению, menuItem
по-прежнему остается скрытым, и я не вижу меню поиска.
Может кто-то помочь, что может быть проблемой? Заранее спасибо !!