片段在第二次加载时为空白

Fragment is blank on second load

应用程序的导航是通过 BottomNavigationView 进行的。 在第一个位置,我有一个片段,它有一个按钮,可以在第一次加载并显示所有内容时导航到另一个 fragment.The。然后,我再次单击 BotttomNavView 上的第一个位置,我们回到父片段(绑定到 BottomNavigationView 的第一个位置)。但是从这一点来看,如果我点击按钮并打开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 中被调用,但是所有的视图都是空的, onCreateView() 没有被调用。

所以在进一步试验之后,我在打开第一个片段之前做了 supportFragmentManager.popBackStack()。现在打开子片段不是空白。