片段在第二个负载上是空白的



应用程序的导航通过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()。现在打开孩子的碎片不是空白的。

最新更新