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 {
...
...
}