[英]DialogFragment.onDismiss() null pointer exception in Kotlin
這是 Kotlin,不是 Java,僅供參考。
我有一個正在使用的 DialogFragment 子類,當它被關閉時我遇到了一些崩潰。 它不會每次都發生,而且我似乎無法找到它的模式。 崩潰發生在重寫的onDismiss()
函數內部,作為自動 Kotlin Intrinstics.checkParameterIsNotNull()
調用。 這是我的對話框子類中反編譯的 Kotlin->Java 代碼:
public void onDismiss(@NotNull DialogInterface dialog) {
Intrinsics.checkParameterIsNotNull(dialog, "dialog");
super.onDismiss(dialog);
}
這是崩潰消息:
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 編譯器會在我的任何代碼之前插入 null 檢查。
我正在通過在擁有 Activity 的onStop()
中調用它來關閉對話框
myDialog?.dismissAllowingStateLoss()
知道是什么原因造成的,更重要的是,我該怎么辦? 看起來這不應該發生,因為接口指定它不能為null
。
這可能是由於 Android 問題跟蹤器上的這個錯誤,該錯誤已在版本 androidx.fragment 版本 1.2.0 中修復。 更新到該版本的 androidx.fragment 應該可以解決問題。
具體來說,當對話框已經被銷毀時,取消/關閉回調的時間似乎是一個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.