android - 视图中没有默认构造函数

时间:2014-11-25 10:38:59

标签: android

我使用扩展android.view.View的类有一个问题,这很奇怪,因为我在两个不同的项目中做同样的事情,只有其中一个是这个问题。

两个项目都有一个类:public class ClassName extends View

但是对于其中一个,这一行用红色加下划线,给出的信息是

  

"' android.view.View'中没有默认构造函数。 "

我不知道为什么一个人有这个问题而另一个没有。当然,它们不是同一个类,但它们都以相同的方式扩展View。我认为这是一个常见的问题,但我没有通过Google搜索找到任何相关信息,所以我在这里问。感谢您提供任何帮助!

编辑:

这些评论让我再次检查,果然,带有错误的类没有在其类中定义构造函数。我觉得有趣的是,即使我去定义了一个构造函数,它仍然会给出相同的错误,直到我添加参数(Context context,AttributeSet attrs)并在构造函数中添加了一行' super(context,attrs)&# 39 ;.我添加了这些因为它们存在于工人阶级的构造函数中。所以工作版本是

public DrawingActivity(Context context, AttributeSet attrs) {
    super(context,attrs);
}

我的新问题是关于这究竟是什么。这是从没有错误的类中获取的,该版本最初是从教程中复制过来的,当时从未考虑过。

3 个答案:

答案 0 :(得分:6)

删除没有参数的构造。

您的视图应该只有3个构造函数:

public DrawingActivity(Context context, AttributeSet attrs) {
    super(context, attrs);

}

public DrawingActivity(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);

}
public DrawingActivity(Context context) {
    super(context);
} 

关于此构造函数,您可以阅读here。我只能提到defStyle:

  

要应用于此视图的默认样式。如果为0,则没有样式   应用(超出主题中包含的内容)。这可能是   属性资源,其值将从当前值中检索   主题或显式样式资源。

答案 1 :(得分:0)

我不认为这是他的问题...... 这不起作用:

`public MyPanel(Context _context) {
    context = _context;
    super(context);`

这确实有效:

`public MyPanel(Context _context) {
    super(_context);
    context = _context;`

我猜这是他的问题,或者至少这是我的问题。你得到了与他描述的相同的错误。

答案 2 :(得分:0)

你班上应该有两个构造函数:

public class ABC extends View{   

public ABC(Context context) {
    super(context);
}

public ABC(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);

}}