Переопределить OnActivityResult внутри Intent не работает - kotlin - PullRequest
1 голос
/ 17 октября 2019

Я переопределяю свой OnActivityResult, чтобы контролировать некоторый поток в приложении.

Проблема в том, что выдает ошибку, что overriding nothing.

вот код, который я использую:

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
}

Ошибка исчезла, только когда я добавляю ненулевую защиту после Intent, чтобы код был таким:

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
}

Но это вызывает ошибку kotlin.KotlinNullPointerException после самой функции.

1 Ответ

3 голосов
/ 17 октября 2019

Подпись метода onActivityResult:

protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data)

Как видите, Intent data имеет значение NULL. Таким образом, чтобы правильно переопределить метод, вы должны использовать:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)

Поскольку данные обнуляются, вы должны использовать оператор безопасного вызова ? каждый раз, когда вам нужно проверить намерение.

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    val action = data?.action
    ...
}
...