Activity異常銷燬後,fragment重疊問題

1.原因分析:

           Activity長期處於後臺,系統由於資源不足,activity被銷燬了,fragment狀態緩存下來了。由於重新進入activity,重新走了

onCreate方法,導致有一個fragment重新加入,造成fragment重疊

2.解決方法:

(1).通過Tag從前保存的數據中直接去讀取

 @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mFragmentManager = getSupportFragmentManager();
        if (savedInstanceState != null) {
            homeFragment =(HomeFragment)mFragmentManager.findFragmentByTag(fragmentTag[0]);
            twoFragment = (TwoFragment) mFragmentManager.findFragmentByTag(fragmentTag[1]);
            myFragment = (MyFragment) mFragmentManager.findFragmentByTag(fragmentTag[2]);
        }
    }

 

(2).將新建的fragment的刪除

 @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mFragmentManager = getSupportFragmentManager();
        if (mFragmentManager.getFragments().size() > 0) {
            FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
            Iterator<Fragment> iterator = mFragmentManager.getFragments().iterator();
            while (iterator.hasNext()) {
                fragmentTransaction.remove(iterator.next());
            }
            fragmentTransaction.commit();
        }
    }

(3).不保存fragment狀態(沒試過)

 @Override
    protected void onSaveInstanceState(Bundle outState) {
        //super.onSaveInstanceState(outState);
    }

參考:https://blog.csdn.net/cui130/article/details/85378748

發佈了31 篇原創文章 · 獲贊 25 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章