我正在学习一个教程,以便可以在视图中的选项卡中滑动。它需要我制作FragmentPageAdapter的子类——在我的情况下:
public class PagerAdapter extends FragmentPagerAdapter {
...
}
我已经实现了所有的抽象方法,但由于某种原因,我得到了以下错误:在"android.support.v4.app.FragagePageAdapter"中没有可用的默认构造函数
有人知道我该怎么解决吗?非常感谢您的帮助。
如果在类PagerAdapter
中没有指定任何构造函数,则使用不带args的默认构造函数,它会查找不带arg的父类构造函数,这相当于.
public PagerAdapter(){
super(); // Looks for constructor public FragmentPagerAdapter (){}
}
在父类FragmentPagerAdapter
中,存在以下构造函数定义的
public FragmentPagerAdapter (FragmentManager fm)
现在java中的规则是,一旦定义了任何带参数的构造函数,默认情况下,除非显式定义,否则无参数构造函数是不可用的。所以这里public FragmentPagerAdapter (){}
不存在。这就是为什么super()
调用找不到无参数默认构造函数而出现此错误的原因。
为了处理这个问题,在类PagerAdapter
中,您需要有一个构造函数,它将调用正确的超类构造函数
public PagerAdapter(FragmentManager fm){
super(fm);
}
您必须调用超级构造函数:http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html#FragmentPagerAdapter(android.support.v4.app.FFragmentManager(
public class PagerAdapter extends FragmentPagerAdapter {
// ...
public PagerAdapter(FragmentManager fm){
super(fm);
}
}
在'android.support.v4.app.FFragmentPageAdapter'中没有可用的默认构造函数
默认构造函数是不带参数的构造函数。由于FragmentPageAdapter有一个非默认构造函数,您需要实现/编码一个与FragmentPageAdapter匹配的构造函数。
哪个是
public FragmentPagerAdapter (FragmentManager fm){
}
在你的情况下,它会像这里的其他答案
public PagerAdapter(FragmentManager fm){
super(fm);
}