InstantiateItem方法在旋转时被调用为时太晚

时间:2018-10-06 07:27:08

标签: android android-fragments rotation android-viewpager android-fragmentactivity

我正在构建一个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生命周期方法可以帮助我实现这一目标?

0 个答案:

没有答案