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

时间:2021-06-14 17:11:22

标签: android kotlin android-viewpager android-viewpager2 fragmentstatepageradapter

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

1 个答案:

答案 0 :(得分:1)

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

通过 Id 获取片段

但是要做到这一点,您需要覆盖 getItemId() 中的 FragmentStateAdapter 以返回位置,以便 ID 现在等于位置。

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

然后在某个位置获取片段:

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