-3

I have Nested Fragments [1 main Fragment called "MainFrag" and many child Fragments] the App can show MainFrag or can show other fragments.

what I want to do is to setCurrentItem of MainFrag's ViewPager every time the user selects to show that MainFrag so I tried to put it at it's onCreateView but this only works for the first time the User Shows MainFrag as if user Selects another fragment and then re-selects MainFrag the seCurrentItem is not working

I also tried to put it inside MainFrag's onResume, It worked as required but it also causes a problem that if the user moved the App to background and then reOpen it viewPager will Scroll and i don't want this

So where Exactly Can I put setCurrentItem ?

mViewPager.setCurrentItem(mCurrentWeekFragmentItemNumber);

Edit: I am using Navigation Menu to Move between 3 main fragments where MainFrag is one of them.

Atef Hares
  • 4,715
  • 3
  • 29
  • 61

3 Answers3

1

After your mViewPager.setAdapter(adapter); method you can put

mViewPager.setCurrentItem(mCurrentWeekFragmentItemNumber);
Sanjay Kakadiya
  • 1,596
  • 1
  • 15
  • 32
  • I have 3 Main fragments on of them is `MainFrag` which contains some childs. what u r saying works only first time I shows `MainFrag` but if a scrolled to some child and then showed up another Main fragment from the 3 and then reShow my `MainFrag` the `currentViewPager` item is Still the same from last time. `setCurrentItem` does not work again. – Atef Hares Apr 25 '16 at 09:54
1

After setting adapter to viewpager add setCurrentItem method

mViewPager.setAdapter(adapter);
mViewPager.setCurrentItem(mCurrentWeekFragmentItemNumber);
mdDroid
  • 3,135
  • 2
  • 22
  • 34
0

Try this:

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) {

            }
        });

    }
Megha Maniar
  • 444
  • 5
  • 22