ViewPager嵌套Fragment来回滑动重新加载数据

在ViewPager中嵌套使用Fragment,他会预加载第二页的数据,但是滑动到第三页的Fragment,前面的Fragment的数据又被清空了,又要重新加载数据,下面提供两个解决办法:

第一种解决方案:

继承 FragmentPagerAdapter 重写 @Override
        public  void  destroyItem (View container,  int  position, Object object) {
            
      }
方法;
将当中的super(XXX)去掉

第二种解决方案:

继承PagerAdapter,重写destroyItem()和instantiateItem()方法

public class MainPagerAdapter extends PagerAdapter {
     private List<Fragment> fragments;
     private FragmentManager manager;

     public MainPagerAdapter(List<Fragment> fragments, FragmentManager manager) {
          super();
          this.fragments = fragments;
          this.manager = manager;
     }

     @Override
     public int getCount() {
          return fragments.size();
     }

     @Override
     public boolean isViewFromObject(View view, Object object) {
          return view == object;
     }

     @Override
     public void destroyItem(ViewGroup container, int position, Object object) {
          container.removeView(fragments.get(position).getView());
     }

     @Override
     public Object instantiateItem(ViewGroup container, int position) {
          Fragment fragment = fragments.get(position);
          if (!fragment.isAdded()) {
               FragmentTransaction transaction = manager.beginTransaction();
               transaction.add(fragment, fragment.getClass().getSimpleName());
               transaction.commitAllowingStateLoss();
               manager.executePendingTransactions();
          }
          if (fragment.getView().getParent() == null) {
               container.addView(fragment.getView());
          }
          return fragment.getView();
     }

}



版权声明:本文为q908555281原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。