【发布时间】:2020-01-20 18:57:49
【问题描述】:
这是 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 编译器会在我的任何代码之前插入空检查。
我通过在拥有的 Activity 的 onStop() 中调用它来关闭对话框
myDialog?.dismissAllowingStateLoss()
知道是什么原因造成的,更重要的是,我能做什么?这似乎不应该发生,因为接口指定它不能是null。
【问题讨论】:
-
张贴整个
MyDialogFragment会有所帮助 -
另外,您是否使用
minifyEnabled true运行此应用程序?在你的app/build.gradle? -
很遗憾,我无法粘贴整个代码,因为它是专有的。不过,我认为这并不重要,因为
onDismiss()是它崩溃的地方,我在MyDialogFragment中没有做任何其他事情,除了在我展示的地方解雇它。我没有使用minifyEnabled。
标签: android kotlin android-dialogfragment