0

i am using Fragment Pager Adapter and PagerView to create swipe tab. But facing some problem.

Here is my:-ViewPagerAdapter

Its showing first fragment and also showing second fragment dialog box(loading data in background). When i swipe to second fragment it loads third fragment dialogbox and load data in background.

public class ViewPagerAdapter extends FragmentPagerAdapter {
  private Context _context;

  public ViewPagerAdapter(Context context, FragmentManager fm) {
      super(fm);
      _context = context;

  }

  @Override
  public Fragment getItem(int position) {
      Fragment f = new Fragment();
      switch (position) {
      case 0:
          f = ReservationTab.newInstance(_context);
          break;
      case 1:
          f = GalleryTab.newInstance(_context);
          break;
      case 2:
          f = VideoTab.newInstance(_context);
          break;
      }
      return f;
  }

  @Override
  public int getCount() {
      return 3;
  }

}

And accessing from here:--

private void setUpView() {
    _mViewPager = (ViewPager) findViewById(R.id.viewPager);
    _adapter = new ViewPagerAdapter(getApplicationContext(),
            getSupportFragmentManager());
    _mViewPager.setAdapter(_adapter);
    _mViewPager.setCurrentItem(0);
}

private void setTab() {
    _mViewPager.setOnPageChangeListener(new OnPageChangeListener() {

        @Override
        public void onPageScrollStateChanged(int position) {
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
        }

        @Override
        public void onPageSelected(int position) {
            // TODO Auto-generated method stub
            System.out.println("PRINT position--  " + position);
            switch (position) {
            case 0:
                first_tab.setVisibility(View.VISIBLE);
                second_tab.setVisibility(View.INVISIBLE);
                third_tab.setVisibility(View.INVISIBLE);
                break;

            case 1:
                first_tab.setVisibility(View.INVISIBLE);
                second_tab.setVisibility(View.VISIBLE);
                third_tab.setVisibility(View.INVISIBLE);
                break;
            case 2:
                first_tab.setVisibility(View.INVISIBLE);
                second_tab.setVisibility(View.INVISIBLE);
                third_tab.setVisibility(View.VISIBLE);
                break;
            }
        }

    });

}

@Override
public void onTabChanged(String arg0) {
    // TODO Auto-generated method stub


}
Snehal Poyrekar
  • 735
  • 5
  • 17
Vijay Laxmi
  • 165
  • 1
  • 21

1 Answers1

1

This is the intended behaviour.

If you don't want ViewPager to load next fragment in background you should invoke setOffscreenPageLimit(0).

See also http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit%28int%29

Jacob Nordfalk
  • 3,533
  • 1
  • 21
  • 21