为什么我在制作FragmentPageAdapter时出错?

时间:2015-07-05 14:02:48

标签: java android user-interface fragment

我正在完成一个教程,以便我可以浏览我视图中的标签。它需要我创建FragmentPageAdapter的子类 - 在我的例子中:

public class PagerAdapter extends FragmentPagerAdapter {
...
}

我已经实现了所有抽象方法但由于某种原因我收到以下错误:'android.support.v4.app.FragmentPageAdapter'中没有默认构造函数

有谁知道如何解决这个问题?任何帮助都非常感谢。

3 个答案:

答案 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)

您必须调用超级构造函数:http://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html#FragmentPagerAdapter(android.support.v4.app.FragmentManager)

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);
}