DialogFragment.onDismiss () исключение нулевого указателя в Kotlin - PullRequest
1 голос
/ 20 января 2020

Это Kotlin, а не Java, к вашему сведению.

У меня есть подкласс DialogFragment, который я использую, и я получаю некоторые сбои, когда он отклоняется. Это происходит не каждый раз, и я не могу найти образец для этого. Cra sh происходит внутри переопределенной функции onDismiss() как автоматический вызов c Kotlin Intrinstics.checkParameterIsNotNull(). Вот декомпилированный Kotlin -> Java код из моего подкласса диалога:

 public void onDismiss(@NotNull DialogInterface dialog) {
   Intrinsics.checkParameterIsNotNull(dialog, "dialog");
   super.onDismiss(dialog);
}

А вот сообщение cra sh:

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter dialog
at com.foo.MyDialogFragment.onDismiss(Unknown Source:2)

Это интерфейс DialogInterface параметр, и это происходит до того, как какой-либо мой код выполняется, поэтому я не могу ничего сделать, чтобы предотвратить это. Невозможно поставить проверку перед этим, потому что компилятор Kotlin вставляет нулевую проверку перед любым моим кодом.

Я закрываю диалоговое окно, вызывая это, внутри onStop()* владельца Activity. 1014 *

myDialog?.dismissAllowingStateLoss()

Любая идея, что вызывает это, и что более важно, что я могу сделать? Кажется, что это никогда не должно происходить, потому что интерфейс указывает, что это не может быть null.

1 Ответ

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

Это может быть связано с этой ошибкой в трекере проблем Android, который был исправлен в версии androidx.fragment версии 1.2.0. Обновление до этой версии androidx.fragment должно решить проблему.

В частности, это проблема со временем отмены / отклонения обратных вызовов, когда диалог уже был уничтожен.

...