У меня была проблема с настройкой некоторых пунктов меню фрагмента в ActionBar
и я нашел способ ее решить, но я не понимаю, почему это сработало.
Я хотел изменить видимость в пункте меню сразу после того, как я раздул его из XML-файла меню в методе onCreateOptionsMenu
. Код вроде работает нормально, но видимого эффекта нет. Я решил проблему, раздув меню в методе onCreateOptionsMenu
, но изменив его видимость в методе onPrepareOptionsMenu
.
Я хочу знать, почему изменение видимости в onCreateOptionsMenu
не работает.
Что я могу сделать в onPrepareOptionsMenu
, чего не могу сделать в onCreateOptionsMenu
?
Есть ли здесь какая-то закономерность?
Спасибо!
Вот соответствующий код на всякий случай:
public class MyFragment extends Fragment {
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.my_menu, menu);
// This does not work, compiles and runs fine, but has no visible effect
MenuItem someMenuItem = menu.findItem(R.id.some_menu_item);
someMenuItem.setVisible(false);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
// This does work
MenuItem someMenuItem = menu.findItem(R.id.some_menu_item);
someMenuItem.setVisible(false);
}
}