我有以下代码,想知道为什么它会使应用程序崩溃,我希望您能帮助我弄清楚发生了什么。
下面的代码与微调器代码不同。
想法是由FireStore文档ID填充spinner racePicker的数组,如下所示:
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")
}
这是一个近似值。我可能已经将其设置为.toString(),或者可能在raceArray语句中使用了.addAll与.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) }
}
}
}
由于某种原因,它会崩溃,但是如果我指定一个文字,例如“种族名称”->“有趣”,“第二种族名称”->“有趣”等,那么它会起作用。
使用会更好
if (selectedItem.equals("$selection") {
// do stufd
}
代替?还是绝对需要将每个case / statement作为文字字符串来调用?我本质上是在寻找一种方法,使微调框的选定项(这是从FireStore数据库生成的文档名称的数组),然后“检查自身”并触发其他功能。