Как сделать несколько конструкторов в Kotlin? - PullRequest
0 голосов
/ 23 мая 2019

Я хочу использовать библиотеку на 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);
      }

Kotlin:

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 Ответ

2 голосов
/ 23 мая 2019
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)
}


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...