如果在使用 FragmentStateAdapter 时加载了错误的页面,则可以尝试以下
示例代码:
class MyPagerAdapter(fragmentManager: FragmentManager): FragmentStateAdapter(fragmentManager) {
private val fragmentsList = listOf(FirstFragment(), SecondFragment(), ThirdFragment())
override fun getItemCount(): Int {
return fragmentsList.size
}
override fun createFragment(position: Int): Fragment {
return fragmentsList[position]
}
override fun getItemId(position: Int): Long {
return fragmentsList[position].hashCode().toLong()
}
override fun getItemPosition(`object`: Any): Int {
val fragment = `object` as Fragment
val position = fragmentsList.indexOf(fragment)
return if (position >= 0) position else POSITION_NONE
}
}
在这个示例中,重写了 getItemId 和 getItemPosition 方法,getItemId 返回 Fragment 的 hashCode 值,并将其作为该 Fragment 的唯一标识符。在 getItemPosition 中,检查该 Fragment 在 fragmentsList 中的位置,并将其返回,如果无法找到该 Fragment,则返回 POSITION_NONE。这保证了 FragmentStateAdapter 中的 Fragment 和列表中的 Fragment 位置是一致的。