安卓 - View 中没有默认的构造函数

7

我使用了一个扩展android.view.View的类,但很奇怪地,在两个不同的项目中都有这样做,只有其中一个会出现问题。

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

但是在其中一个项目中,这一行被标为红色下划线,并出现以下信息:

"There is no default constructor available in 'android.view.View' "

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

编辑:

评论让我再次检查,果然有错误的类中没有定义构造函数。有趣的是,即使我去定义了一个构造函数,它仍然会出现相同的错误,直到我添加参数(Context context, AttributeSet attrs)并在构造函数中添加一行'super(context, attrs)'。我加入这些是因为它们存在于正常工作的类的构造函数中。因此,正常工作的版本是:

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

我的新问题是关于这个东西到底是干什么的。这段代码来自没有错误的类,那个版本最初是从教程中复制的,当时从未深入思考过。


看一下另一个类。你会找到一个或多个构造函数。 - Phantômaxx
你的视图中有一个空构造函数(即没有参数的构造函数)吗? - Blackbelt
1
请发布您的 ClassName 类。 - Mohammad Rahchamani
请发布您的类的代码。 - Suvitruf - Andrei Apanasik
如果您的问题已得到解答,请确保接受一个答案以供参考。 - Suvitruf - Andrei Apanasik
3个回答

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

关于这个构造函数,您可以在这里阅读更多信息。我只能提到defStyle:
默认的样式应用于此视图。如果为0,则不会应用任何样式(除了主题中包含的样式)。这既可以是属性资源,其值将从当前主题中检索,也可以是显式样式资源。

0
你的类应该有两个构造函数:
public class ABC extends View{   

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

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

}}

0

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

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

这个是有效的:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接