【发布时间】:2015-04-12 17:30:09
【问题描述】:
弹出回栈后,我的 Fragments 没有被垃圾回收?他们的onStop() 方法被调用,但不是他们的onDestroyView() 或onDestroy() 方法。
如何确保他们的onDestory() 方法被调用?
我犯了一个错误,做了一个“上帝活动”,我所有的片段.replace()一个容器FrameLayout。假设我有四个片段,FragA、FragB、FragC 和 FragD,其后栈看起来像这样:
FragA -> FragB -> FragC -> FragD
FragD is the only visible fragment. Then, I call .popBackstack()`
FragA -> FragB -> FragC =!= FragD
FragD 已被分离,FragC 现在对用户可见。当尝试实例化一个新的FragD(来自FragC)时,它被创建了,我的堆上有两个FragD 实例。并且第一个FragD 实例的onDestroyView() 没有被调用。
我该如何解决这个问题?
编辑:这是我当前如何在 UI 中替换片段的示例:
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new SearchScreenFragment())
.addToBackStack(null)
.commit();
EDIT2:onDetach() 也没有被调用。
【问题讨论】:
标签: android android-fragments back-stack