片段在第二次加载时为空白
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()
。现在打开子片段不是空白。
应用程序的导航是通过 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()
。现在打开子片段不是空白。