2013-01-18 81 views
5

我面臨內存泄漏,因爲某些片段未被刪除。我有活動,與片段F1填充視圖。該片段具有與之關聯的ViewPager和FragmentStatePagerAdapter。適配器與另一個片段F2感覺尋呼機。問題在Activity中刪除Fragment F1時開始。現有碎片F2不會被刪除。FragmentStatePagerAdapter不刪除父母片段中的片段

有什麼建議嗎?

回答

0

我有完全相同的問題。嘗試將你的碎片F1移回到一個活動中。這可以幫助您確定問題是否在片段中有片段。 Android並不是那麼喜歡。如果我在我身邊發現了一些東西,我會讓你知道

2

不知道它是否是同一個問題,但是前一段時間,我對viewpager有一個問題,那裏的fragment生命週期方法從來沒有調用過,問題是片段管理器。

因此,當您創建適配器時,請嘗試傳遞childFragmentManager而不是supportFragmentManager並查看它是否修復了您的問題。

0

我在這裏面臨同樣的問題。在長時間研究如何以「正確」的方式糾正它之後,我無法完成它的工作。所以我不得不在我的活動中刪除F1父片段(帶有片段事務)之前顯式釋放所有F2的片段。

// Remove all content from the FragmentStatePagerAdapter instance. 
myAdapter.Content.Clear(); // Content here may be an ArrayList in Java or a List in C#. 
myAdapter.NotifyDataSetChanged(); 

// Reset current empty adapter inside the ViewPager (this will make all existing F2 fragments to be released). 
myViewPager.Adapter = myAdapter; 

// Do the transaction removing the parent F1 fragment from the main Activity. 
FragmentManager.BeginTransaction()... 

通過以下步驟,所有F2片段開始釋放形式的內存和他們也有他們的OnPauseOnDestroyView ...被調用OnDestroy回調也是如此。