Reputation: 111
Im using three fragments on a view pager , im using position id as reference and based on the position id my fragments are getting displayed , each fragment has different data in it , here is my code
@Override
public Fragment getItem(int position)
{
if(position==1){
Log.e("Fragment","Fragment 1::"+String.valueOf(i));
if (!(i<3))
{
new Progress(100).execute();
new Progress2(20).execute();
new Progress3(30).execute();
}
++i;
return SlideFragment.newInstance(1, " ");}
if(position==2){
Log.e("Fragment","Fragment 2");
if (!(i<3))
{
new Progress(40).execute();
new Progress2(50).execute();
new Progress3(90).execute();
}
++i;
return Slidetwo.newInstance(String.valueOf(2), " ");}
if (position==3)
Log.e("Fragment","Fragment 3");
if (!(i<3))
{
new Progress(50).execute();
new Progress2(10).execute();
new Progress3(40).execute();
}
++i;
return SlideThree.newInstance(String.valueOf(3), " ");
}
In this code only the two log values are getting displayed , and even though the data of all the three fragments are getting displayed im not getting the log from all the three fragments and data in that fragment is being displayed when i swipe back to the other two fragments , I anybody know where i am wrong please help me .
Upvotes: 1
Views: 92
Reputation: 290
Use this.Start your position from 0;
@Override
public Fragment getItem(int position)
{
if(position==0){
Log.e("Fragment","Fragment 1::"+String.valueOf(i));
if (!(i<3))
{
new Progress(100).execute();
new Progress2(20).execute();
new Progress3(30).execute();
}
++i;
return SlideFragment.newInstance(1, " ");}
if(position==1){
Log.e("Fragment","Fragment 2");
if (!(i<3))
{
new Progress(40).execute();
new Progress2(50).execute();
new Progress3(90).execute();
}
++i;
return Slidetwo.newInstance(String.valueOf(2), " ");}
if (position==2)
Log.e("Fragment","Fragment 3");
if (!(i<3))
{
new Progress(50).execute();
new Progress2(10).execute();
new Progress3(40).execute();
}
++i;
return SlideThree.newInstance(String.valueOf(3), " ");
}
Upvotes: 0
Reputation: 569
It's because the ViewPager
loads the current page and next 1 page in memory, by default.
example)
ViewPager viewPager;
viewPager.setOffScreenPageLimit(2);
Upvotes: 1