Tamil Selvan
Tamil Selvan

Reputation: 111

Fragments inside a View Pager

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

Answers (2)

Rajkumar Kumawat
Rajkumar Kumawat

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

Suhyeon Lee
Suhyeon Lee

Reputation: 569

It's because the ViewPager loads the current page and next 1 page in memory, by default.

Try setOffScreenPageLimit().

example)

ViewPager viewPager;
viewPager.setOffScreenPageLimit(2);

Upvotes: 1

Related Questions