Reputation: 6155
I have implemented view pager using the FragmentStatePagerAdapter. I have used 3 fragments in the view. The view pager is showing all 3 tabs with views as it should be , now my issue is that the third fragment is not visible but i am able to scroll till third tab and when i scroll back i see the second fragment but again the first fragment vanishes and all i am left is with second fragment.
mPager = (ViewPager)mContext.findViewById(R.id.viewPager);
mPager.setOnPageChangeListener(this);
mPagerAdapter = new MyPagerAdapter(mContext.getSupportFragmentManager(),mContext);
mPager.setAdapter(mPagerAdapter);
adapter code is
public class MyPagerAdapter extends FragmentStatePagerAdapter {
private int NUM_PAGES = 3;
List<Fragment> listFragment = new ArrayList<Fragment>();
private MyActivity mContext;
public MyPagerAdapter(FragmentManager fragmentManager, MyActivity mActivity) {
super(fragmentManager);
this.mContext = mActivity;
listFragment.add(new FirstFragment());
listFragment.add(new SecondFragment());
listFragment.add(new ThirdFragment());
}
@Override
public int getItemPosition(Object object){
return PagerAdapter.POSITION_NONE;
}
@Override
public Fragment getItem(int position) {
Log.v("fragment position",""+position);
return listFragment.get(position);
}
@Override
public int getCount() {
return NUM_PAGES;
}
}
I am stuck in this for a while, i would really appreciate some help.Thank you.
Upvotes: 3
Views: 1318
Reputation: 1222
It is advised to use FragmentPagerAdapter instead of FragmentStatePagerAdapter, because of very nature of those two. FragmentStatePagerAdapter is being that is able to scroll through infinite views. In case of fixed amount of them, like your case you should use FragmentPagerAdapter.
If you happen to have context issues later override following method:
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment fragment = (Fragment) super.instantiateItem(container, position);
mFragments.remove(position);
mFragments.add(position, fragment);
return fragment;
}
Where mFragments is your list.
Upvotes: 1