【问题标题】:How to get a fragment using position from a FragmentStateAdapter with ViewPager2如何使用 ViewPager2 从 FragmentStateAdapter 的位置获取片段
【发布时间】:2021-06-14 17:11:22
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用 Fragment manager 的findFragmentByTag("f$id")通过 Ids 获取 Fragment

    但要做到这一点,您需要在 FragmentStateAdapter 中覆盖 getItemId() 以返回位置,以便 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")
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-12
      • 2019-08-03
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 2020-06-12
      • 1970-01-01
      • 2020-09-21
      相关资源
      最近更新 更多