我正在完成一个教程,以便我可以浏览我视图中的标签。它需要我创建FragmentPageAdapter的子类 - 在我的例子中:
public class PagerAdapter extends FragmentPagerAdapter {
...
}
我已经实现了所有抽象方法但由于某种原因我收到以下错误:'android.support.v4.app.FragmentPageAdapter'中没有默认构造函数
有谁知道如何解决这个问题?任何帮助都非常感谢。
答案 0 :(得分:4)
如果未在类PagerAdapter
中指定任何构造函数,则使用带有no-args的默认构造函数,它将查找父类no-args构造函数,它等效于。
public PagerAdapter(){
super(); // Looks for constructor public FragmentPagerAdapter (){}
}
在父类FragmentPagerAdapter
中,定义了以下构造函数
public FragmentPagerAdapter (FragmentManager fm)
现在java中的规则是,一旦定义了任何带参数的构造函数,默认的no-args构造函数就不可用,除非你明确定义它。
所以这里public FragmentPagerAdapter (){}
不存在。这就是为什么super()
调用无法找到no-args默认构造函数并且出现此错误的原因。
要处理这个问题,在你的类PagerAdapter
中你需要有一个构造函数来调用正确的超类构造函数
public PagerAdapter(FragmentManager fm){
super(fm);
}
答案 1 :(得分:1)
public class PagerAdapter extends FragmentPagerAdapter {
// ...
public PagerAdapter(FragmentManager fm){
super(fm);
}
}
答案 2 :(得分:0)
'android.support.v4.app.FragmentPageAdapter'中没有默认构造函数
默认构造函数是没有参数的构造函数。 由于FragmentPageAdapter具有非默认的构造函数,因此您需要实现/编码与FragmentPageAdapter匹配的构造函数。
是
public FragmentPagerAdapter (FragmentManager fm){
}
在你的情况下,它会像其他答案一样
public PagerAdapter(FragmentManager fm){
super(fm);
}