文字未设置为可变字符串

时间:2018-08-30 16:13:00

标签: android firebase kotlin google-cloud-firestore

我正在尝试将文本添加到变量中,并在对话框中使用该变量,但不会添加任何内容。 这是我的代码:

var dex = ""
firestoreInstance.collection("test").whereEqualTo("module", listMod[spinnerMod.selectedItemPosition].ID).get().addOnCompleteListener { task ->
     if (!task.result.isEmpty) for (document in task.result) {
          dex += "Success"
     } else {
          dex += "Fail"
     }
}
val builder = AlertDialog.Builder(this)
builder.setMessage(dex).setTitle(dex).show()

这是输出:

enter image description here

我想念什么?

1 个答案:

答案 0 :(得分:1)

Firebase Task异步执行。发生的情况是,您触发了查询,并在AlertDialog仍然为空字符串的情况下立即放置了dex。然后,查询完成后,它会更改dex的值,但永远不会再次读取。

您可以改为在任务完成时显示对话框:

firestoreInstance.collection("test").whereEqualTo("module", listMod[spinnerMod.selectedItemPosition].ID).get().addOnCompleteListener { task ->
     var dex = ""
     if (!task.result.isEmpty) for (document in task.result) {
          dex += "Success"
     } else {
          dex += "Fail"
     }
    val builder = AlertDialog.Builder(this)
    builder.setMessage(dex).setTitle(dex).show()
}