[英]Androidx ViewPager2 incompatible types: ViewPagerAdapter cannot be converted to Adapter
I am using ViewPager2, and I get the following error on viewPager2.setAdapter
:我正在使用 ViewPager2,在viewPager2.setAdapter
上viewPager2.setAdapter
以下错误:
incompatible types: ViewPagerAdapter cannot be converted to Adapter不兼容的类型:ViewPagerAdapter 无法转换为 Adapter
MainActivty主要活动
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager(),fragmentList);
viewPager2.setAdapter(viewPagerAdapter);
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();
}
}
You're trying to use a ViewPager
v1 adapter with ViewPager2
.您正在尝试将ViewPager
v1 适配器与ViewPager2
一起ViewPager2
。 You should convert your adapter to implement FragmentStateAdapter
instead.您应该将您的适配器转换为实现FragmentStateAdapter
。
See this section of the migration documentation for more information.有关更多信息,请参阅迁移文档的这一部分。 In particular, you'll want to rename your getCount
method to getItemCount
, as well as renaming getItem
to createFragment
and making it return a new Fragment
each time rather than re-using instances.特别是,您需要将getCount
方法重命名为getItemCount
,并将getItem
重命名为createFragment
并使其每次返回一个新的Fragment
而不是重复使用实例。
public class ViewPagerAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> fragments;
private ArrayList<String> titles;
public ViewPagerAdapter(FragmentManager fm){
super(fm);
this.fragments=new ArrayList<>();
this.titles=new ArrayList<>();
}
@NonNull
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
public void addFragment(Fragment fragment, String title){
fragments.add(fragment);
titles.add(title);
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
} }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.