5

我正面临内存泄漏,因为某些片段没有被删除。我有使用 Fragment F1 填充视图的 Activity。该片段具有与之关联的 ViewPager 和 FragmentStatePagerAdapter。适配器正在使用另一个 Fragment F2 感觉寻呼机。当我在活动中删除 Fragment F1 时,问题就开始了。现有的 Fragments F2 不会被删除。

有什么建议么?

4

3 回答 3

2

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

因此,当您创建适配器时,请尝试传递 childFragmentManager 而不是 supportFragmentManager 并查看它是否可以解决您的问题。

于 2013-02-28T00:11:32.417 回答
0

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

// 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回调也被调用。

于 2013-11-25T20:51:01.020 回答
0

我有完全一样的问题。尝试将片段 F1 移回活动中。这可能会帮助您确定问题是否是在片段中有片段。Android 真的不喜欢这样。如果我发现我身边的东西,我会告诉你

于 2013-01-22T22:11:31.533 回答