弹出后备箱后,我的碎片没有被垃圾收集?他们调用了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()
也没有被调用。
答案 0 :(得分:2)
我应该一直在使用它:getChildFragmentManager()
: