我一直在尝试在 kotlin 中实现 viewpager2,但我无法弄清楚为什么我收到一个错误,说没有适配器连接到回收 View
这是我的 MainActivity.kt:
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
binding = ActivityMainBinding.inflate(layoutInflater)
binding.viewpager2.adapter = Viewpager2Adapter(this)
TabLayoutMediator(binding.tabLayout , binding.viewpager2){
tab, position ->
tab.text = "OBJECT ${(position + 1)}"
}.attach()
}
}
下面是 viewpager2Adapter.kt::
class Viewpager2Adapter(fa : FragmentActivity): FragmentStateAdapter(fa) {
override fun getItemCount(): Int = 3
override fun createFragment(position: Int): Fragment= Fragment2()
}
这是我的 fragment2.kt::class Fragment2 : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_2, container, false)
}
}
有人可以通过找出我做错了什么来帮助我。先感谢您 :)
最佳答案
我认为您没有在 MainActivity 中正确使用 View 绑定(bind)。
在 setContentView 你应该有 binding.root 而不是 R.layout.activity_main
下面是 MainActivity 中 onCreate 函数的代码:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
viewpager2Adapter = Viewpager2Adapter(this)
viewPager2 = binding.viewpager2
tabLayout = binding.tabLayout
viewPager2.adapter = viewpager2Adapter
TabLayoutMediator(tabLayout, viewPager2){
tab, position ->
tab.text = "OBJECT ${(position + 1)}"
}.attach()
}
关于android - 没有适配器连接到 viewpager2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63426140/