如何使用带有 ViewPager2 的 FragmentStateAdapter 的位置获取片段

How to get a fragment using position from a FragmentStateAdapter with ViewPager2

我正在使用 ViewPager2FragmentStateAdapter 来创建片段集合。我想根据其在适配器中的位置访问特定片段。我怎样才能达到同样的效果?

您可以使用片段管理器的 findFragmentByTag("f$id")

通过 ID 获取片段

但要做到这一点,您需要将 FragmentStateAdapter 中的 getItemId() 覆盖到 return 位置,这样 id 现在等于位置。

override fun getItemId(position: Int): Long {
    return position.toLong()
}

然后获取一个位置的片段:

  • 如果 ViewPager2 由 activity 托管,请使用 supportFragmentManager:
    fun getPageFragment(id: Long): Fragment? {
        return supportFragmentManager.findFragmentByTag("f$id")
    }
  • 如果它由片段托管,请使用 childFragmentManager:
    fun getPageFragment(id: Long): Fragment? {
        return childFragmentManager.findFragmentByTag("f$id")
    }