应用程序的导航通过BottomNavigationView
发生。在第一个位置,我有一个片段,该片段可以导航到另一个碎片。它首次加载并显示所有内容。,我再次单击Botttomnavview上的第一个位置,我们返回到父片段(绑定到底部navigationView的第一个位置)。但是从这一点开始,如果我单击按钮并打开fragment
,它始终为空白。
这是我的碎片管理的样子:
fun navigateTo(
context: Context,
fragment: BaseFragment,
navigatable: Navigatable,
addToBackStack: Boolean
) {
val activity = ContextUtil.getActivityFromContext(context)
val tag = fragment.javaClass.toString()
val fragmentManager = (activity as BaseActivity).supportFragmentManager
val transaction = fragmentManager.beginTransaction()
if (fragmentManager.findFragmentByTag(fragment.javaClass.toString()) == null) {
transaction.add(R.id.container, fragment, tag).hide(fragment)
}
val activeFragment = findVisibleFragment(context)
transaction
.apply {
if (activeFragment != null) {
hide(activeFragment)
}
}
.show(fragment)
.apply {
if (addToBackStack) {
this.addToBackStack(tag)
}
}
.commit()
navigatable.afterScreenTransition(fragment).invoke()
}
我进行了一个实验,发现onAttach()
在我的pager fragment
中被调用,但所有视图均为null,onCreateView()
未调用。
因此,在进行进一步的实验后,我在打开第一片之前进行了supportFragmentManager.popBackStack()
。现在打开孩子的碎片不是空白的。