原理其实就是hide show 如果想实现其他情况可以replace
public class ViewPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragmentList;
FragmentManager fragmentManager;
public ViewPagerAdapter(@NonNull FragmentManager fm) {
super(fm);
this.fragmentManager = fm;
}
@NonNull
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
public void setFragmentList(List<Fragment> fragmentList) {
if (this.fragmentList != null) this.fragmentList.clear();
this.fragmentList = fragmentList;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
Fragment fragment = (Fragment) super.instantiateItem(container, position);
fragmentManager.beginTransaction().show(fragment).commit()
return fragment;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
Fragment fragment = fragmentList.get(position);
fragmentManager.beginTransaction().hide(fragment).commit();
}
}