//注意这个方法,这个是配置你在哪个碎片上进行替换 @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position){ //这里的判断说明的是在三个和第四个碎片上替换 if (position == 2||position == 3) removeFragment(container,position); returnsuper.instantiateItem(container, position); }
//这个方法就是通过 Tag 来判断碎片是不是原来的,如果不是就进行替换 privatevoidremoveFragment(ViewGroup container,int index){ String tag = getFragmentTag(container.getId(), index); Fragment fragment = fm.findFragmentByTag(tag); if (fragment == null) return; FragmentTransaction ft = fm.beginTransaction(); ft.remove(fragment); ft.commit(); ft = null; fm.executePendingTransactions(); }
@NonNull @Override public Fragment getItem(int position){ return fragments.get(position); }