Метод переопределения для анонимного класса в Kotlin для Android - PullRequest
0 голосов
/ 08 октября 2018

Мой код написан на Java, и я рефакторинг его в Kotlin.У меня есть это:

Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar) {
    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        dismiss();
        dialog = null;
        setLockedDialog(false);
        return false;
    }
};

Я не могу написать это с помощью Kotlin.Это мой подход:

dialog = Dialog(this, android.R.style.Theme_Translucent_NoTitleBar) {
    override fun dispatchTouchEvent(ev: MotionEvent) {
        // TODO Implement function
    }
}

Моя Android Studio показывает мне:

1- Type mismatch. Required: Boolean. Found: Int (ниже android.R.style.Theme_Translucent_NoTitleBar).

2- Type mismatch. Required: DialogInterface.OnCancelListener! Found: () - > Unit окружающихпереопределенная функция.

Есть предложения?

1 Ответ

0 голосов
/ 08 октября 2018

Измените код на этот:

dialog = object: Dialog(this, android.R.style.Theme_Translucent_NoTitleBar) {
    override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
        // TODO Implement function
    }
}

Причина, по которой он жалуется, состоит в том, что 2 вещи.Во-первых, вам нужно создать объект для переопределения функции Dialog.Во-вторых, dispachTouchEvent возвращает не логическое значение, а единицу.

...