我一直在学习如何使用 FragmentStateAdapter 和 ViewPager2,我遇到的问题之一是在createFragment
. 我知道必须返回一个片段,但是一些示例应用程序有一个片段列表传递给适配器并执行以下操作:
override fun createFragment(position: Int): Fragment {
fragmentList[postion]
}
而其他示例在方法中创建片段,例如:
override fun createFragment(position: Int): Fragment {
when (position) {
0 -> return FragmentOne()
1 -> return FragmentTwo()
2 -> return FragmentThree()
}
// ...
}
我觉得第二种选择更安全,我想证明第一种方法会很糟糕,但是在使用第一种选择时我看不到任何不良行为/问题。例如,我已经走到了极端,并设置了一个视图寻呼机来使用 100 个片段和一个offscreenPageLimit
设置为 1 的值!在这些情况下,片段视图被更频繁地重新创建,但createFragment
在查看之前已滑过的旧片段时从未调用过。
我在这里错过了一些简单的东西吗?什么时候需要重新创建片段?