class extends AppCompatImageView 没有主构造函数就不可能进行超类型初始化
class extends AppCompatImageView Supertype initialization is impossible without primary constructor
有一个自定义图像视图 class 扩展了 AppCompatImageView
它显示错误:没有主构造函数就不可能进行超类型初始化
class ImageViewVasl : AppCompatImageView() {
constructor(context: Context) : super(context) {
initialize(context = context, attrs = null)
}
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
initialize(context = context, attrs = attrs)
}
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
) {
initialize(context = context, attrs = attrs)
}
private fun initialize(
context: Context?,
attrs: AttributeSet?
) {
}
}
尝试:
class ImageViewVasl() : AppCompatImageView(){
constructor(context: Context) : this(context) {
initialize(context = context, attrs = null)
}
...
}
或:
class ImageViewVasl: AppCompatImageView{
constructor(context: Context) : this(context, null)
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
...
}
}
你需要调用父类的构造函数:
class PieChart(context: Context, attrs: AttributeSet) : View(context, attrs)
在你的源代码中,我看不到你在哪里调用了父类的构造函数。
此 link 中的更多详细信息:https://developer.android.com/training/custom-views/create-view
只需在 AppCompatImageView() 之后删除 (),像这样
class ImageViewVasl : AppCompatImageView {
...
...
}
有一个自定义图像视图 class 扩展了 AppCompatImageView
它显示错误:没有主构造函数就不可能进行超类型初始化
class ImageViewVasl : AppCompatImageView() {
constructor(context: Context) : super(context) {
initialize(context = context, attrs = null)
}
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
initialize(context = context, attrs = attrs)
}
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(
context,
attrs,
defStyleAttr
) {
initialize(context = context, attrs = attrs)
}
private fun initialize(
context: Context?,
attrs: AttributeSet?
) {
}
}
尝试:
class ImageViewVasl() : AppCompatImageView(){
constructor(context: Context) : this(context) {
initialize(context = context, attrs = null)
}
...
}
或:
class ImageViewVasl: AppCompatImageView{
constructor(context: Context) : this(context, null)
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
...
}
}
你需要调用父类的构造函数:
class PieChart(context: Context, attrs: AttributeSet) : View(context, attrs)
在你的源代码中,我看不到你在哪里调用了父类的构造函数。 此 link 中的更多详细信息:https://developer.android.com/training/custom-views/create-view
只需在 AppCompatImageView() 之后删除 (),像这样
class ImageViewVasl : AppCompatImageView {
...
...
}