我想关闭片段中的片段。我使用以下代码从Activity
添加Fragment
。
Activity -> Fragment-A -> Fragment-B
在Activity
:
addFragment(AFragment(),R.id.fragment_layout,FragTag.fragA)
fun addFragment(fragment: Fragment, frameId: Int, tag:String){
supportFragmentManager.beginTransaction().apply {
setCustomAnimations(R.anim.slide_in_left,0,0,R.anim.slide_out_right)
add(frameId, fragment)
addToBackStack(tag)
}.commit()
}
在Fragment-A
,用于创建fragment-B
addFragment(TestBFragment(),R.id.childFragment_layout,FragTag.fragB)
private fun addFragment(fragment: Fragment, frameId: Int, tag:String) {
childFragmentManager.beginTransaction().apply {
setCustomAnimations(R.anim.slide_in_left,0,0,R.anim.slide_out_right)
add(frameId, fragment)
addToBackStack(tag)
}.commit()
}
上面的代码工作正常,但是使用以下代码自行关闭片段B是行不通的。
childFragmentManager.popBackStackImmediate()
childFragmentManager.popBackStack()
childFragmentManager.backStackEntryCount
在fragment-B
中返回 0
我错过了什么吗?
如何通过childFragmentManager
自行关闭fragment
?
片段A的childFragmentManager
与片段B的fragmentManager
相同。所以要从A中删除B,你必须调用
childFragmentManager.popBackStack()
要从B 本身中删除B,您必须调用
fragmentManager.popBackStack()
片段B的childFragmentManager
从未用于添加另一个片段,因此后堆栈为空。