【发布时间】:2019-02-23 08:01:22
【问题描述】:
我希望能够访问我的集合的字段值,但我无法在 for 循环中执行此操作。
我附上了我尝试过的代码和下面的截图。
在下面的代码中 str 是文档中的名称(例如:sgjj,如正在获取的屏幕截图中)
firestore 数据库截图:
我试过的代码:
class HostActivityScreen : AppCompatActivity(),HostAdapter.OnItemCheckListener {
var currentSelected:ArrayList<String> = ArrayList()
override fun onItemCheck(item: String) {
currentSelected.add(item)
}
override fun onItemUncheck(item: String) {
currentSelected.remove(item)
}
for(str in currentSelected){
print(str)
var id: String = ""
var gamingname:String=""
mFirestore.collection("AllUsers").document(str).get().addOnCompleteListener(OnCompleteListener<DocumentSnapshot> { task ->
if (task.isSuccessful) {
val docs:DocumentSnapshot= task.result!!
print(docs.getData())
if(docs!=null){
id =task.result!!.data!!.get("gaminguserid").toString()
gamingname = task.result!!.data!!.get("gaminname").toString();
}
}
})
}
}
它显示的错误是:
kotlin.KotlinNullPointerException
at HostActivityScreen$onCreate$1$5.onSuccess(HostActivityScreen.kt:120)
at HostActivityScreen$onCreate$1$5.onSuccess(HostActivityScreen.kt:31)
at com.google.android.gms.tasks.zzn.run(Unknown Source)
第 120 行是:
id= documentSnapshot.getString("gaminguserid")!!
第 31 行是:
class HostActivityScreen : AppCompatActivity(),HostAdapter.OnItemCheckListener {
我的调试屏幕截图(不进入 addonsucesslistener):
以上代码都不起作用,我可以看到 str 值已获得,但它没有进入 addonsuccesslistener 或 addoncompletelistener 循环。为什么会发生这种情况。我如何访问字段值?
【问题讨论】:
-
究竟是什么不起作用?有错误吗?观察到的行为?
-
这段代码有什么问题?也请回复@。
-
@AlexMamo 我已经用错误/调试屏幕截图更新了我上面的代码
-
@DougStevenson 我已经用错误/调试屏幕截图更新了我上面的代码。
-
尽量避免循环并手动给出文档名称进行调试
标签: android firebase kotlin google-cloud-firestore