'setAdapter(androidx.viewpager.widget.PagerAdapter)' in 'androidx.viewpager.widget.ViewPager' cannot be applied to '(com.example.weatherreport.CityFragmentPagerAdapter)'
时间: 2023-10-10 19:15:44 浏览: 173
android_PagerAdapter使用
这个错误提示是因为 `CityFragmentPagerAdapter` 没有继承自 `androidx.viewpager.widget.PagerAdapter` 类,而 `ViewPager` 类中的 `setAdapter()` 方法的参数类型是 `androidx.viewpager.widget.PagerAdapter`。
要解决这个问题,你需要让 `CityFragmentPagerAdapter` 继承自 `androidx.viewpager.widget.PagerAdapter` 类,并且实现其中的抽象方法。例如:
```
public class CityFragmentPagerAdapter extends PagerAdapter {
private List<Fragment> fragmentList;
public CityFragmentPagerAdapter(FragmentManager fragmentManager, List<Fragment> fragmentList) {
super(fragmentManager);
this.fragmentList = fragmentList;
}
@Override
public int getCount() {
return fragmentList.size();
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
return view == ((Fragment) object).getView();
}
}
```
然后在使用 `ViewPager` 时,就可以直接传入 `CityFragmentPagerAdapter` 类型的参数了,例如:
```
List<Fragment> fragmentList = new ArrayList<>();
// 添加 Fragment 到 fragmentList 中
CityFragmentPagerAdapter adapter = new CityFragmentPagerAdapter(getSupportFragmentManager(), fragmentList);
ViewPager viewPager = findViewById(R.id.viewPager);
viewPager.setAdapter(adapter);
```
这样就能解决这个错误提示了。
阅读全文