当你使用
FragmentPagerAdapter
时,可能会遇到警告提示说
FragmentPagerAdapter
已过时。这是因为在AndroidX库中推荐使用
FragmentStateAdapter
代替
FragmentPagerAdapter
。
下面是一个示例代码,展示了如何使用
FragmentStateAdapter
来替代
FragmentPagerAdapter
:
首先,确保你的项目中已经迁移到了AndroidX。打开
build.gradle
文件,将
android.support
相关依赖替换为对应的
androidx
依赖。
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.viewpager2:viewpager2:1.0.0'
然后,创建一个继承自FragmentStateAdapter
的适配器类。在适配器类中,重写getItemCount
方法和createFragment
方法。
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter
class MyAdapter(fragmentActivity: FragmentActivity) :
FragmentStateAdapter(fragmentActivity) {
override fun getItemCount(): Int {
return 3 // 返回ViewPager中的Fragment数量
override fun createFragment(position: Int): Fragment {
// 根据position返回对应的Fragment
return when (position) {
0 -> Fragment1()
1 -> Fragment2()
2 -> Fragment3()
else -> throw IllegalArgumentException("Invalid position: $position")
最后,在你的Activity中将ViewPager2
与新的适配器关联起来。
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.viewpager2.widget.ViewPager2
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val viewPager: ViewPager2 = findViewById(R.id.viewPager)
val adapter = MyAdapter(this)
viewPager.adapter = adapter