android - ArrayAdapter 没有默认构造函数
android - There is no default constructor for ArrayAdapter
我正在制作适配器以使我的藏书在列表视图中可见。
如果我添加 super(context, position):
问题就解决了
public BookAdapter(Context context, int position, List <Book> updatedBooksList) {
super(context, position);
this.context = context;
this.booksList = updatedBooksList ;
}
但是,我想知道为什么我需要这个参数(int 位置)并调用超类构造函数?
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
此外,从广义上讲,为什么我们总是(?)需要在每个 onCreate 中像这里一样调用 super.onCreate?
难道我们不应该覆盖所有 activity 生命周期阶段 -
onPause、onREsume、onStop、OnDestroy,但我们仍然 调用它们中的每一个?
Issue is solved if I add super(context, position):
第二个参数不是position
。它是布局资源的 ID,默认情况下用于 ArrayAdapter
创建的行。你可以通过阅读 the JavaDocs for the constructor that you are calling.
来判断
However, I want to know why I need this argument (int position) and call superclass constructor?
因为,正如 IDE 告诉您的那样,ArrayAdapter
上没有默认构造函数。在 Java 中,"default constructor" 是一个零参数构造函数。 Java 中的每个构造函数都需要链接到超类构造函数。如果超类有一个零参数 ("default") 构造函数,Java 将自动链接到它。如果超类没有零参数构造函数,则需要手动链接到超类构造函数。
Also, in the broader sense why do we always(?) need to call super.onCreate like here in every onCreate?
因为创建 Activity
的开发人员选择将其作为一项要求。
Aren't we supposed to override all our activity lifecycle stage
没有。你覆盖你需要的那些。
yet we still have to call super's in each of them?
Activity
除了您想做的任何事情之外,还想对那些生命周期方法进行处理。为了强制执行这一点,Activity
要求您链接到超类,如果不这样做则抛出一个 SuperNotCalledException
。
我正在制作适配器以使我的藏书在列表视图中可见。
如果我添加 super(context, position):
问题就解决了 public BookAdapter(Context context, int position, List <Book> updatedBooksList) {
super(context, position);
this.context = context;
this.booksList = updatedBooksList ;
}
但是,我想知道为什么我需要这个参数(int 位置)并调用超类构造函数?
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
此外,从广义上讲,为什么我们总是(?)需要在每个 onCreate 中像这里一样调用 super.onCreate?
难道我们不应该覆盖所有 activity 生命周期阶段 - onPause、onREsume、onStop、OnDestroy,但我们仍然 调用它们中的每一个?
Issue is solved if I add super(context, position):
第二个参数不是position
。它是布局资源的 ID,默认情况下用于 ArrayAdapter
创建的行。你可以通过阅读 the JavaDocs for the constructor that you are calling.
However, I want to know why I need this argument (int position) and call superclass constructor?
因为,正如 IDE 告诉您的那样,ArrayAdapter
上没有默认构造函数。在 Java 中,"default constructor" 是一个零参数构造函数。 Java 中的每个构造函数都需要链接到超类构造函数。如果超类有一个零参数 ("default") 构造函数,Java 将自动链接到它。如果超类没有零参数构造函数,则需要手动链接到超类构造函数。
Also, in the broader sense why do we always(?) need to call super.onCreate like here in every onCreate?
因为创建 Activity
的开发人员选择将其作为一项要求。
Aren't we supposed to override all our activity lifecycle stage
没有。你覆盖你需要的那些。
yet we still have to call super's in each of them?
Activity
除了您想做的任何事情之外,还想对那些生命周期方法进行处理。为了强制执行这一点,Activity
要求您链接到超类,如果不这样做则抛出一个 SuperNotCalledException
。