我面临内存泄漏,因为某些片段未被删除。我有使用Fragment F1填充视图的Activity。该片段具有与之关联的ViewPager和FragmentStatePagerAdapter。适配器感觉与另一个片段F2的寻呼机。在Activity I中删除Fragment F1时出现问题。现有碎片F2未被删除。
有什么建议吗?
答案 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
片段开始从内存中释放,并且还调用了OnPause
,OnDestroyView
... OnDestroy
个回调