簡體   English   中英

Kotlin 中的 DialogFragment.onDismiss() 空指針異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM