Где разместить метод "ViewPager.setCurrentItem()"

Я вложил Fragments [1 основной Fragment называется "MainFrag" и много детей Fragments] приложение может показывать MainFrag или другие фрагменты.

что я хочу сделать, это setCurrentItem MainFrag's ViewPager каждый раз, когда пользователь выбирает, чтобы показать, что MainFrag, поэтому я пытался поставить его на это onCreateView но это работает только в первый раз, когда пользователь показывает MainFrag, как будто пользователь выбирает другой фрагмент, а затем повторно выбирает MainFrag seCurrentItem не работает

Я также попытался поместить это в MainFrag's onResume, Он работал как требуется, но это также вызывает проблему, что если пользователь переместил приложение в фоновый режим, а затем снова открыл его, viewPager будет прокручивать, и я не хочу этого

Так куда конкретно можно положить setCurrentItem?

mViewPager.setCurrentItem(mCurrentWeekFragmentItemNumber);

Изменить: я использую меню навигации для перемещения между 3 основными фрагментами, где MainFrag является одним из них.

3 ответа

Решение

После вашего 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) {

            }
        });

    }
Другие вопросы по тегам