0

Fragment Pager AdapterとPagerViewを使用してスワイプタブを作成しています。しかし、いくつかの問題に直面しています。

これが私のものです:-ViewPagerAdapter

最初のフラグメントを表示し、2 番目のフラグメント ダイアログ ボックスも表示します (バックグラウンドでデータをロードしています)。2 番目のフラグメントにスワイプすると、3 番目のフラグメント ダイアログ ボックスが読み込まれ、バックグラウンドでデータが読み込まれます。

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;
  }

}

そして、ここからアクセスします:--

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


}
4

1 に答える 1

1

これは意図した動作です。

ViewPager がバックグラウンドで次のフラグメントをロードしないようにするには、setOffscreenPageLimit(0) を呼び出す必要があります。

http://developer.android.com/reference/android/support/v4/view/ViewPager.html#setOffscreenPageLimit%28int%29も参照してください。

于 2013-09-08T22:22:03.717 に答える