我有多个用于存储各种文档的集合,并且正在尝试访问特定的集合,以便可以从特定的文档中检索字段。我正在尝试这样做onStart
John Doe ----> "DocumentId (a23bsz12bvxaQw2)" ----> |name: John Doe, age: 23, occupation: teacher|
我可以用另一种方法检索特定的集合,但这仅是因为我能够将集合的名称作为参数传递。对于我来说,到达特定集合的唯一方法是对进行硬编码fieldPath
。
到目前为止,这是我的代码:
override fun onStart() {
super.onStart()
val caseManagerNameOnStart = caseManagerName?.text
val notebookRef = db.collection("$caseManagerNameOnStart")
notebookRef.addSnapshotListener(this, object : EventListener<QuerySnapshot?> {
override fun onEvent(querySnap: QuerySnapshot?, ex: FirebaseFirestoreException?) {
if (ex != null) {
return
}
if (querySnap != null) {
for (documentSnapshot in querySnap) {
val appointment = documentSnapshot.toObject(
Appointment::class.java
)
appointment.setId(documentSnapshot.id)
appointment_text_view_date.text =
"Date: " + documentSnapshot["dateAppointment"].toString()
appointment_text_view_time.text =
"Time: " + documentSnapshot["timeAppointment"].toString()
appointment_text_view_case_manager.text =
"Case Manager: " + documentSnapshot["caseManagerName"].toString()
appointment_text_view_client_name.text =
"Client: " + documentSnapshot["userName"].toString()
appointment_text_view_format.text =
"Format: " + documentSnapshot["formatAppointment"].toString()
}
}
}
})
}
val caseManagerNameOnStart = caseManagerName?.text
似乎是空的,当我调用有问题的活动时,应用程序崩溃了。caseManagerName
应该包含可用于for的名称fieldPath
,但是在某些情况下可能没有要检索的集合,因此不应将任何内容设置为TextView。
我的预期输出是这样的:
onStart
崩溃的应用程序。这是我在Firestore中的数据的图像。消防站数据
我将不胜感激任何输入。感谢您的时间。
但是,这仅仅是因为我能够将集合的名称作为参数传递。
为了访问文档的属性,必须知道集合的名称。
val caseManagerNameOnStart = caseManagerName?.text似乎为空,应用崩溃
它是空的,这是您发生崩溃的原因。
caseManagerName应该包含可用于fieldPath的名称
或者,您可以将集合的名称保存在其他类型的对象中,例如,在SharedPreferences中。
但是,在某些情况下可能没有要检索的集合,因此不应为TextViews设置任何内容。
这是在引用中进行设置之前,可以检查集合是否存在的方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句