I have search a lot about this solution. I tried remove from mFragmentList and mFragmentTitleList directly. And I also tried call the destroyItem. Many methods have been tried. None of them worked. I have been stuck on this problem for few days. Is there Any answer could help? Thanks.
public final class OrdersViewPagerAdapter extends android.support.v4.app.FragmentPagerAdapter{
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public OrdersViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
if (position <= getCount()) {
FragmentManager manager = ((Fragment) object).getFragmentManager();
FragmentTransaction trans = manager.beginTransaction();
trans.remove((Fragment) object);
trans.commit();
}
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
public void removeView(String title, ViewGroup view, TabLayout tabLayout) {
int index=-1;
int count=mFragmentTitleList.size();
for (int i=0;i<count;i++){
String mtitle=mFragmentTitleList.get(i);
if (mtitle.equals(title)){
index=i;
break;
}
}
if (index!=-1) {
mFragmentTitleList.remove(index);
tabLayout.removeTabAt(index);
destroyItem(view,index,mFragmentList.get(index));
notifyDataSetChanged();
}
}
}