"ViewPager.setCurrentItem()"方法放在哪里

Where to put "ViewPager.setCurrentItem()" Method

我有嵌套 Fragments [1 个主 Fragment 调用 "MainFrag" 和许多子 Fragments] App可以显示MainFrag,也可以显示其他片段。

我想做的是每次用户选择显示 MainFrag 时 setCurrentItem of MainFrag 的 ViewPager 所以我试图把它放在它的 onCreateView 但这只有效第一次用户显示 MainFrag 就好像用户选择另一个片段然后重新选择 MainFrag seCurrentItem 不工作

我也尝试将它放在 MainFrag 的 onResume 中,它按要求工作,但它也会导致一个问题,如果用户将应用程序移动到后台然后重新打开它,viewPager 会滚动,而我不会想要这个

那么我到底可以把 setCurrentItem 放在哪里?

mViewPager.setCurrentItem(mCurrentWeekFragmentItemNumber);

编辑:我正在使用导航菜单在 3 个主要片段之间移动,其中 MainFrag 是其中之一。

在你的mViewPager.setAdapter(adapter);方法之后你可以把

mViewPager.setCurrentItem(mCurrentWeekFragmentItemNumber);

将适配器设置为 viewpager 后添加 setCurrentItem 方法

mViewPager.setAdapter(adapter);
mViewPager.setCurrentItem(mCurrentWeekFragmentItemNumber);

试试这个:

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                viewPager.setCurrentItem(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

    }