【发布时间】:2022-01-03 16:17:07
【问题描述】:
每次更新某些文档字段后应用程序崩溃。这些字段按预期更新,但在回调addOnSuccessListener 中出现崩溃。当我删除 OnSuccessListener 时,它工作正常。有什么建议吗?
更新:我发现我所有的 Firestore 调用都会导致应用程序在 addOnSuccessListener 中崩溃,因此原因更加全球化。同样使用 addOnCompleteListener 而不是 addOnSuccessListener 可以按预期工作。
更新2:Issue discussion and solution
fun setAppointmentStatus(docId: String, status: String, callback: (succeed: Boolean) -> Unit) {
db.collection(path)
.document(docId)
.update("status", status, "updatedAt", FieldValue.serverTimestamp())
.addOnSuccessListener {
callback(true)
}
}
堆栈跟踪:
2022-01-03 18:25:50.654 9378-9378/com.project.provider E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.project.provider, PID: 9378
java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter it
at com.biosensics.nula.cloud.AppointmentCloudHelper$setAppointmentStatus$1.onSuccess(Unknown Source:2)
at com.biosensics.nula.cloud.AppointmentCloudHelper$setAppointmentStatus$1.onSuccess(Unknown Source:2)
at com.google.android.gms.tasks.zzm.run(com.google.android.gms:play-services-tasks@@18.0.0:1)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7839)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
【问题讨论】:
-
您在哪一行代码中获得了 NPE?
-
@AlexMamo 我猜这是 Firestore SDK 内部崩溃,所以记录器不显示行号
-
您可以编辑您的问题以显示整个堆栈跟踪吗?
-
堆栈跟踪显示错误来自您自己的代码。你确定
callback不是null? -
来自错误消息:“指定为非空的参数为空:方法kotlin.jvm.internal.Intrinsics.checkNotNullParameter,参数它”这里似乎需要
it,而你'没有指定它(原文如此)。我还不足以成为 Kotlin 专家,无法确切了解如何在您的代码中解决此问题,但是从setAppointmentStatus$1.onSuccess(Unknown Source:2)来看,错误的来源没有太多空间。
标签: android google-cloud-firestore