Использование onPrepareOptionsMenu вместо onCreateOptionsMenu во фрагменте

У меня была проблема с настройкой некоторых пунктов меню фрагмента в 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);
    }
}
7
задан Vasily Kabunov 6 December 2016 в 05:18
поделиться