我在片段中设置 ViewPager2 时遇到问题。据我所知,我所做的一切都是正确的,但是我想在托管片段中显示的片段根本不显示。这是我的适配器:
class RepsViewPagerAdapter(supportFragmentManager: FragmentManager, lifecycle: Lifecycle):
FragmentStateAdapter(supportFragmentManager,lifecycle) {
private val fragments = arrayListOf(NationalRepsFragment(),StateRepsFragment(),CityRepsFragment())
val titles = arrayListOf("National","State","City")
override fun getItemCount(): Int {
return fragments.size
}
override fun createFragment(position: Int): Fragment {
Log.i("MYTAG",fragments[position].toString())
return fragments[position]
}
我在如下所示的方法中设置了 ViewPager2 onViewCreated()
:
private fun setUpTabs() {
val adapter = RepsViewPagerAdapter(childFragmentManager,lifecycle)
pager.adapter = adapter
TabLayoutMediator(tabs, pager, object : TabLayoutMediator.TabConfigurationStrategy {
override fun onConfigureTab(tab: TabLayout.Tab, position: Int) {
tab.text = adapter.titles[position]
}
}).attach()
}
我尝试过的事情包括:
将适配器更改
FragmentManager
为supportFragmentManger
和parentFragmentManager
更改
FragmentStateAdaper
to的构造函数参数FragmentActivity
并在宿主 Fragment 中创建实例requireActivity()
提供我想在托管片段中显示的片段的实例
记录
fragments[position]
何时createFragment()
调用的结果。这证实了createFragment
单击选项卡时正在调用