我正在构建一个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
的{{1}}中,我调用了上述的FragmentActivity
方法。 invalidateFragmentMenus
运行时,尚未设置onResumeFragments
中的Fragments(尚未调用FragmentPagerAdapter
方法),我无法访问{{ 1}}。这将导致没有图标的空白工具栏。
instantiateItem
完成实例化其项后,FragmentPagerAdapter
可以通过任何方式收听吗?这样我就可以调用我的FragmentActivity
方法了吗?还是有一种FragmentPagerAdapter
生命周期方法可以帮助我实现这一目标?