如果删除了父片段,FragmentStatePagerAdapter不会删除片段

时间:2013-01-18 19:21:48

标签: android android-fragments android-viewpager

我面临内存泄漏,因为某些片段未被删除。我有使用Fragment F1填充视图的Activity。该片段具有与之关联的ViewPager和FragmentStatePagerAdapter。适配器感觉与另一个片段F2的寻呼机。在Activity I中删除Fragment F1时出现问题。现有碎片F2未被删除。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

不确定它是否是同一个问题,但前段时间我遇到了viewpager的问题,其中片段生命周期方法从未被调用过,问题出在片段管理器上。

因此,在创建适配器时,尝试传递childFragmentManager而不是supportFragmentManager,看看它是否修复了您的问题。

答案 1 :(得分:0)

我有完全相同的问题。尝试将片段F1移回活动。这可能有助于您确定问题是否在片段中有片段。 Android并不是那么喜欢。如果我在我身边找到了什么,我会告诉你的。

答案 2 :(得分:0)

我在这里遇到了同样的问题。经过长时间的研究,如何以“正确”的方式纠正它,我无法让它发挥作用。因此,在从我的活动中删除F2父片段(带有片段事务)之前,我被迫显式释放所有F1个片段。

// 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个回调