因此,假设我有一个包含FragmentA
的活动。 FragmentA
有一个子片段FragmentB
。用户在FragmentA
中触发将FragmentB
替换为FragmentC
的某些操作。尽管正在创建片段C,并且其视图似乎已膨胀,但其视图不可见。
此嵌套片段结构还存在2种有趣的行为:
-如果重新创建了活动(及其所有子片段),则FragmentC
的用户界面将可见
-如果从未将FragmentB
添加到FragmentA
并将FragmentC
附加到FragmentA
,则FragmentC
的用户界面将可见
我正在使用以下Kotlin扩展方法将片段添加到其各自的父布局中:
fun <T: Fragment> FragmentManager.overlayFragment(layoutId: Int,
fragmentClazz: Class<T>,
arguments: Bundle? = null) {
val fragment = this.findFragmentById(layoutId)?.let {
if (fragmentClazz.isInstance(it)) {
it
} else {
fragmentClazz.newInstance()
}
} ?: fragmentClazz.newInstance()
fragment.arguments = arguments
this.beginTransaction()
.replace(layoutId, fragment)
.commit()
}
因此在FragmentA
中,我将有一些类似于以下的代码:
childFragmentManager.overlayFragment(R.id.parent_layout, FragmentC::java.class)
在其上附加子片段。
任何人都可以阐明导致这种现象的原因以及如何解决该问题的方法吗?