在子类中定义后如何通过super发送参数?

How to Send Argument Through Super After Being Defined In Subclass?

我想通过 super 将属性发送到视图中。 (如第一行所示)但是IDE不想拿;我的代码中遗漏了一些东西。

class BoxDrawingView(context: Context): View(context, attrs) {

    var attrs: AttributeSet? = null

    constructor(context: Context, attrs: AttributeSet): this(context) {
        this.attrs = attrs
    }
}

谁能帮我解决这个问题?谢谢!

试试这个:

class BoxDrawingView : View {

    var attrs: AttributeSet? = null

    constructor(context: Context) : super(context)

    constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
        this.attrs = attrs
    }
}

问题是您没有一个适用于所有情况的构造函数。发生这种情况时,您可以避免使用普通构造函数 shorthand(即声明属性与 class 声明内联),创建多个构造函数,并将每个委托给不同的 superclass 构造函数.

如果你想将 attrs 声明为 val 而不是 var:

,你也可以稍微修改一下
class BoxDrawingView : View {

    val attrs: AttributeSet?

    constructor(context: Context) : super(context) {
        this.attrs = null
    }

    constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
        this.attrs = attrs
    }
}