-1

enter image description here我有兩個片段一個列表和一個細節片段。在列表項上單擊我隱藏列表片段並添加詳細片段後面的按詳細片段會自動彈出我只是調用super.onBackPressed()但問題是它正在創建如此多的細節片段引用導致內存泄漏內存泄漏片段trasaction

以下是我的代碼

FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); 
    ft.hide(this); 
    ft.add(containerId, detailFragment, "detail"); 
    ft.addToBackStack("detail"); 
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
    ft.commit(); 

我不希望查看重新創建視圖時,用戶按下後退按鈕上的細節片段這就是爲什麼我上面的方法使用。還與當前實現,當我按後退按鈕recylerview滾動possition和其他數據我沒有保存

我的活動只是下面的代碼它膨脹名單片段

if (savedInstanceState == null) { 
     getSupportFragmentManager().beginTransaction() 
       .add(R.id.FragmentContainer1, ListFragment.newInstance(), TAG).commit(); 

    } 
+0

請發佈完整的活動代碼。 – Thirumalvalavan

+0

'它正在創建如此多的細節片段引用導致內存泄漏'你對此有多確定?你從哪裏看到這些泄漏? – azizbekian

+0

增加了活動代碼和內存分配。看看計數DealFragment – apk

回答

0

我認爲你做錯了什麼是你每次都一次又一次地通過調用add方法將碎片容器:

在你的情況,你應該使用replace方法並添加列表片段到堆棧中。下面是你應該如何開始你的細節片段:

FragmentManager fm = getFragmentManager(); 

    fm.beginTransaction() 
    .replace(R.id.container, new DetailFragment()) 
    .addToBackstack(null) 
    .commit(); 

要返回到您的列表片段,這是在返回堆疊,只要致電:

fm.popBackStack(); 

編輯:

嘗試使用此方法顯示列表的片段:

protected void displayListFragment() { 
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 

    if (listFragment.isAdded()) { 
     ft.show(listFragment); 
    } else { 
     ft.add(R.id.flContainer, listFragment, "ListFragment"); 
    } 

    if (detailFragment.isAdded()) { 
     ft.remove(detailFragment); 
    } 

    ft.commit(); 
} 

這顯示你的細節片段:

protected void displayDetailFragment() { 
     FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 

     if (listFragment.isAdded()) { 
      ft.hide(listFragment); 
     } 

     if (!detailFragment.isAdded()) { 
      ft.add(R.id.flContainer, detailFragment, "DetailFragment"); 
     } 

     ft.commit(); 
    } 
+0

這樣做並不會恢復回收站視圖滾動位置和其他的東西 – apk

+0

你說,你並不需要保存滾動位置「還與當前的實現,當我按後退按鈕recylerview滾動possition和其他數據我沒有救」 – Umarov

+0

我說與cureent實施,如果我添加替換滾動狀態丟失 – apk