Как перевести обратные вызовы в kotlin - PullRequest
0 голосов
/ 16 февраля 2020

Мне нужно сделать этот запрос с Kotlin:

One one = One.getInstance(getApplicationContext());
one.sendInteraction("/interactionName", new GetCallback<ResponseObject>() {

    public void done(ResponseObject response, ThunderheadException e) {
        if (e == null) {
             // Success!
            one.processResponse(response);
        } else {
            // Failure!
        }
    }
});

Когда я пытаюсь конвертировать на Android Studio переводчик, код не подходит. Я новичок ie с Kotlin, я пробовал несколько способов, но всегда терпел неудачу. Моя проблема в методе обратного вызова

new GetCallback<ResponseObject>() { public void done(ResponseObject response, ThunderHeadException e){...}}`

Не могли бы вы помочь мне найти способ сделать это в Kotlin?

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Когда у обратного вызова есть только один метод, вы можете рассматривать его как лямбду:

one.sendInteraction("/interactionName") { response, e ->
    if (e == null) {
         // Success!
        one.processResponse(response);
    } else {
        // Failure!
    }
}
1 голос
/ 16 февраля 2020

Обычно вы реализуете интерфейс, используя ключевое слово object. Это может выглядеть примерно так:

one.sendInteraction("/interactionName", object : GetCallback<ResponseObject> {
    // ...
})

Затем следуйте инструкциям по автозаполнению IntelliJ, чтобы переопределить функции.

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