androidx.fragment.app.FragmentPagerAdapter
已经被标记为过时(deprecated)。如果你使用该类来管理
ViewPager
和多个
Fragment
之间的切换,建议使用官方推荐的替代类
androidx.viewpager2.adapter.FragmentStateAdapter
。
FragmentStateAdapter
和
FragmentPagerAdapter
之间最大的不同点是
FragmentStateAdapter
支持 RecyclerView 的 ViewHolder 模式,以及对 Fragment 的状态保存和恢复更为高效。
下面是一些使用
FragmentStateAdapter
的基本步骤:
FragmentStateAdapter
的适配器类。
public class MyAdapter extends FragmentStateAdapter {
private List<Fragment> mFragmentList;
public MyAdapter(FragmentManager fragmentManager, List<Fragment> fragmentList) {
super(fragmentManager, getLifecycle());
mFragmentList = fragmentList;
@Override
public Fragment createFragment(int position) {
return mFragmentList.get(position);
@Override
public int getItemCount() {
return mFragmentList.size();
在你的 Activity 或 Fragment 中,设置 ViewPager2 的适配器为 MyAdapter
类的实例。
ViewPager2 viewPager = findViewById(R.id.viewPager);
List<Fragment> fragmentList = new ArrayList<>();
//添加你的Fragment到fragmentList中
MyAdapter myAdapter = new MyAdapter(getSupportFragmentManager(), fragmentList);
viewPager.setAdapter(myAdapter);
这样就可以使用 FragmentStateAdapter
替代 FragmentPagerAdapter
,实现 ViewPager
和多个 Fragment
之间的切换。
需要注意的是,如果你的项目已经使用了 ViewPager2
,你就无需再切换到 FragmentStateAdapter
了,因为 ViewPager2
自身就已经包含了 FragmentStateAdapter
的功能。