Remove or Clear All Fragments From ViewPager

不想你离开。 提交于 2019-12-01 18:58:16

the fragment was already getting removed and destroyed. the issue was of viewpages.

Only this worked for me

myViewPager.setSaveFromParentEnabled(false);

Cheers !

Add this method in ViewPagerAdapter and call it when you want to clear fragments from viewPager

public void clear() {
    FragmentTransaction transaction = manager.beginTransaction();
    for (Fragment fragment : mFragmentList) {
        transaction.remove(fragment);
    }
    mFragmentList.clear();
    transaction.commitAllowingStateLoss();
}

mViewPager : is the view you are using to set you Fragment

mViewPager = (YourViewPager) findViewById(R.id.myPager);

TABLE : is just a Integer list of the position of all my Fragments

public void destroyAllItem() {
        int mPosition = mViewPager.getCurrentItem();
        int mPositionMax = mViewPager.getCurrentItem()+1;
        if (TABLE.size() > 0 && mPosition < TABLE.size()) {
            if (mPosition > 0) {
                mPosition--;
            }

            for (int i = mPosition; i < mPositionMax; i++) {
                try {
                    Object objectobject = this.instantiateItem(mViewPager, TABLE.get(i).intValue());
                    if (objectobject != null)
                        destroyItem(mViewPager, TABLE.get(i).intValue(), objectobject);
                } catch (Exception e) {
                    Log.i(TAG, "no more Fragment in FragmentPagerAdapter");
                }
            }
        }
    }

    @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();
        }
    }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!