Я создаю приложение для Android с ViewPager
, содержащим две вкладки.Каждый раз, когда пользователь проводит пальцем по пейджеру просмотра, я запускаю метод, который вызывает следующую функцию:
public void invalidateFragmentMenus(int position) {
Fragment visibleFragment = pagerAdapter.getCurrentlyVisibleFragment(position);
for (int i = 0; i < pagerAdapter.getCount(); i++) {
for (Fragment fragment : pagerAdapter.getNestedFragments(i)) {
fragment.setHasOptionsMenu(fragment == visibleFragment);
}
}
invalidateOptionsMenu();
}
Эта функция делает недействительными меню каждого фрагмента, чтобы на панели инструментов отображались соответствующие значки.Только меню, видимое в данный момент Fragment
на текущей выбранной вкладке ViewPager
, будет иметь включенное меню опций.
Моя проблема в том, что когда устройство поворачивается, у меня появляется панель инструментов без каких-либо значков.В onResumeFragments
моего единственного родителя FragmentActivity
я вызываю invalidateFragmentMenus
метод, упомянутый выше.Во время работы onResumeFragments
фрагменты в FragmentPagerAdapter
еще не были установлены (метод instantiateItem
еще не был вызван), и я не могу получить доступ к элементам, отображаемым в моем FragmentPagerAdapter
.Это приводит к пустой панели инструментов без значков.
Есть ли способ, которым мой FragmentActivity
может прослушивать, когда мой FragmentPagerAdapter
завершил создание своих элементов?Таким образом, я могу затем вызвать мой invalidateFragmentMenus
метод?Или есть метод жизненного цикла FragmentActivity
, который может помочь мне достичь этого?