【问题标题】:Fragment is blank on second load第二次加载时片段为空白
【发布时间】:2024-01-15 07:31:01
【问题描述】:

应用程序的导航通过BottomNavigationView 进行。 在第一个位置,我有一个片段,它有导航到另一个片段的按钮。它第一次加载并显示所有内容。然后,我再次单击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()没有被调用。

【问题讨论】:

    标签: android kotlin android-viewpager fragment


    【解决方案1】:

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

    【讨论】:

      最近更新 更多