如何在Kotlin中创建多个构造函数?

时间:2019-05-23 14:00:54

标签: android kotlin

我想使用Java中的库,它有很多错误,因此我试图将其更改为Kotlin。而且AndroidStudio无法将Java正确地转换为Kotlin,因此我必须逐个功能地进行操作并手动进行检查。但是这3个构造函数给出了错误:

错误:None of these following functions can be called with the arguments supplied

Java:

public class CountryCodePicker extends RelativeLayout
...

        public CountryCodePicker(Context context) {
        super(context);
        if (!isInEditMode()) init(null);
      }

      public CountryCodePicker(Context context, AttributeSet attrs) {
        super(context, attrs);
        if (!isInEditMode()) init(attrs);
      }

      public CountryCodePicker(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        if (!isInEditMode()) init(attrs);
      }

科特琳:

class CountryCodePicker: RelativeLayout
...

constructor(context: Context): this{
        super(context)
        if (!isInEditMode) init(null)
    }

    constructor(context: Context, attrs: AttributeSet): this{
        super(context, attrs)
        if (!isInEditMode) init(attrs)
    }

    constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int): this{
        super(context, attrs, defStyleAttr)
        if (!isInEditMode) init(attrs)
    }

1 个答案:

答案 0 :(得分:2)

class CountryCodePicker: RelativeLayout {

constructor(context: Context) : super(context) {
    if (!isInEditMode) init(null)
}

constructor(context: Context, attrs: AttributeSet): super(context, attrs){
    if (!isInEditMode) init(attrs)
}

constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int): super(context, attrs, defStyleAttr) {
    if (!isInEditMode) init(attrs)
}


}