【发布时间】:2021-06-14 17:11:22
【问题描述】:
我正在使用ViewPager2 和FragmentStateAdapter 来创建片段集合。我想根据它在适配器中的位置来访问一个特定的片段。我怎样才能达到同样的效果?
【问题讨论】:
标签: android kotlin android-viewpager android-viewpager2 fragmentstatepageradapter
我正在使用ViewPager2 和FragmentStateAdapter 来创建片段集合。我想根据它在适配器中的位置来访问一个特定的片段。我怎样才能达到同样的效果?
【问题讨论】:
标签: android kotlin android-viewpager android-viewpager2 fragmentstatepageradapter
您可以使用 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")
}
【讨论】: