问题描述
有一个扩展 AppCompatimageView 的自定义 Imageview 类
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,defStyleAttr) {
...
}
}
,
你需要调用父的构造函数:
class PieChart(context: Context,attrs: AttributeSet) : View(context,attrs)
在您的源代码中,我看不到您在哪里调用父级的构造函数。 此链接中的更多详细信息:https://developer.android.com/training/custom-views/create-view
,在 AppCompatImageView() 之后删除 (),就像这样
class ImageViewVasl : AppCompatImageView {
...
...
}