我使用扩展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);
}
我的新问题是关于这究竟是什么。这是从没有错误的类中获取的,该版本最初是从教程中复制过来的,当时从未考虑过。
答案 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);
}}