Firebase 当我试图在微调器中具有动态值时,应用程序崩溃

Firebase 当我试图在微调器中具有动态值时,应用程序崩溃,firebase,dictionary,kotlin,google-cloud-firestore,spinner,Firebase,Dictionary,Kotlin,Google Cloud Firestore,Spinner,我有下面的代码,想知道为什么它会使应用程序崩溃,我希望你能帮我弄清楚到底发生了什么 除了微调器代码之外,下面的代码并不精确 其想法是让spinner racePicker的数组由FireStore文档ID填充,如下所示: val db = FirebaseFirestore.getInstance() val raceArray = ArrayList() raceArray.add("Select race...") db.collection("races").get().addOnSu

我有下面的代码,想知道为什么它会使应用程序崩溃,我希望你能帮我弄清楚到底发生了什么

除了微调器代码之外,下面的代码并不精确

其想法是让spinner racePicker的数组由FireStore文档ID填充,如下所示:

val db = FirebaseFirestore.getInstance()

val raceArray = ArrayList()
raceArray.add("Select race...")

db.collection("races").get().addOnSuccessListener { 
DocumentSnapshot ->
    for (document in DocumentSnapshot) {
        raceArray.add(document.id)
        Log.e("info", "raceArray contains values $raceArray")
    }
这是一个粗略的近似值。我可能在raceArray语句中设置了.toString(),或者使用了.addAll vs.add

(老实说,我记不清这是否是我编码的方式,但它足够近,足以给出一个想法,我现在正在记忆中打字)

我的意图是这样使用它:

racPicker.onSelectedItemListener = object : 
OnItemSelectedListener {
    override fun onNothingSelected() {
        }
    override fun onItemSelected(parent: AdapterView<*>?, view: 
View?, position: Int, id: Long) {
val selection = parent?.getItemAtPosition(position).toString()
    when (selection) {
        "$selection" -> raceArray.remove("Select race...").also{ 
statAllocator(selection) }
    }
}
}

相反?还是绝对有必要将每个when case/语句作为文本字符串调用?我本质上是在寻找一种方法,让微调器的选定项(这是从FireStore数据库生成的文档名数组)然后“检查自身”并触发其他功能。

如果应用程序崩溃,则会有堆栈跟踪。请在logcat上查找,并将其添加到您的问题中。如果应用程序崩溃,则会出现堆栈跟踪。请在logcat上查找,并将其添加到您的问题中。
if (selectedItem.equals("$selection") {
        // do stufd
    }