首页 > 解决方案 > Androidx ViewPager2 不兼容类型:ViewPagerAdapter 无法转换为 Adapter

问题描述

我正在使用 ViewPager2,但出现以下错误viewPager2.setAdapter

不兼容的类型:ViewPagerAdapter 无法转换为 Adapter

主要活动

viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(),fragmentList);
viewPager2.setAdapter(viewPagerAdapter);

ViewPagerAdapter

public class ViewPagerAdapter extends FragmentStatePagerAdapter {

    private List<PagerFragment> fragments;


    public ViewPagerAdapter(FragmentManager fm, List<PagerFragment> fragments) {
        super(fm);
        this.fragments = fragments;
    }

    /* (non-Javadoc)
     * @see android.support.v4.app.FragmentPagerAdapter#getItem(int)
     */
    @Override
    public Fragment getItem(int position) {
        return this.fragments.get(position);
    }

    /* (non-Javadoc)
     * @see android.support.v4.view.PagerAdapter#getCount()
     */
    @Override
    public int getCount() {
        return this.fragments.size();
    }
}

标签: javaandroidandroidxandroid-jetpackandroid-viewpager2

解决方案


您正在尝试将ViewPagerv1 适配器与ViewPager2. 您应该将您的适配器转换为实现FragmentStateAdapter

有关更多信息,请参阅迁移文档的此部分。特别是,您需要将getCount方法重命名为getItemCount,以及重命名getItemcreateFragment并使其Fragment每次都返回一个新的,而不是重复使用实例。


推荐阅读