我该怎么解决'androidx.viewpager.widget.PagerAdapter' 中的 'PagerAdapter()' 无法应用于 '(androidx.fragment.app.FragmentManager)'这个问题
时间: 2023-06-06 13:06:11 浏览: 243
您可以考虑使用 "androidx.viewpager2.widget.ViewPager2" 替换 "androidx.viewpager.widget.ViewPager",这是 ViewPager2 引入的一项改进,同时也是 androidx.fragment.app.FragmentStateAdapter 的推荐适配器。这将允许您使用适配器与 FragmentManager。如果需要使用 ViewPager,则需创建自定义 PagerAdapter 并通过其构造函数传递 FragmentManager 对象。
相关问题
'setAdapter(androidx.viewpager.widget.PagerAdapter)' in 'androidx.viewpager.widget.ViewPager' cannot be applied to '(com.example.weatherreport.CityFragmentPagerAdapter)'
这个错误提示是因为 `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);
```
这样就能解决这个错误提示了。
阅读全文