У меня есть три фрагмента в viewpager.OptionsMenu of Fragments in Viewpager, показывающий кнопки друг друга
Два из этих фрагментов имеют свою собственную версию метода onCreateOptionsMenu:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
// Set up 1 action button
inflater.inflate(R.menu.home_snapshot_add, menu);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
// Set up 2 action buttons
inflater.inflate(R.menu.home_snapshot_send, menu);
}
Домашняя деятельность имеет базовый метод onCreateOptionsMenu:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return false;
}
В OnCreate метод, каждый фрагмент вызывает метод :
setHasOptionsMenu(true);
Каждый элемент меню имеет тег :
android:showAsAction="always"
Кажется, что при открытии операции отображаются все три кнопки. Однако, когда я прокручиваю их, те волшебники исчезают. Кажется, что действие вызывает меню опций Фрагмента по созданию активности, а затем соответствующим образом меняет меню, когда я прокручиваю влево и вправо. Я проверил меню, но не уверен, что случилось. Все, что вы считаете, мне нужно проверить? У меня мало идей.
Спасибо!
Спасибо за вас супер быстрый ответ! В моем коде было много чего не так. 1. У меня был setHasOptionsMenu для истины для всех моих фрагментов. (ваш код исправлен) 2. У меня был вложенный фрагмент, который не был пойман вашим кодом 3. Собственные параметры ActivityMenu активности раздували свое собственное меню в качестве попытки инициализировать меню. (было удалено) Еще раз спасибо! – SalicBlu3
Вы можете перебирать дочерние фрагменты с помощью 'getChildFragmentManager()' и применять такую же логику, а затем вызывать 'invalidateOptionsMenu()' –
Работает только в том случае, если в вашем пейджер-адаптере вы сохраняете список ссылок на фрагменты. Это шаблон, который мне лично не нравится, так как андроид должен сделать это для меня, и вся цель пейджера - освободить память при слайд-страницах ... Так что моя функция adapter.getItem возвращает только новые фрагменты. – Mostrapotski