我有一项活动初始化FragmentA
,FragmentA
包含FragmentB
。
因此,当我用FragmentA
替换FragmentC
时,onPause()
的{{1}}和onResume()
函数未被调用。
而且,当我返回FragmentB
时,FragmentB' FragmentA
将在onPause()
之前被调用。
这是我的活动示例代码:
onResume()
这是我的片段示例代码:
class MyActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (savedInstanceState == null) {
val myFragmentA = FragmentA()
fragmentManager
.beginTransaction()
.replace(R.id.fragContainer, myFragmentA, FRAGMENT_A_TAG)
.commit()
}
}
}
片段B: -
class FragmentA : Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// loading fragmentB
fragmentManager.beginTransaction().replace(R.id.fragBContainer, FragmentB()).commit()
}
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
//my layout changes
}
}
答案 0 :(得分:1)
Fragment B
未调用onResume
或onPause()
的原因是因为它未正确添加到视图中。如果要嵌套片段,则在管理嵌套片段时需要使用getChildFragmentManager()
而不是常规FragmentManager()
:
getChildFragmentManager().beginTransaction().replace(R.id.fragBContainer, FragmentB()).commit()