尝试获取所选项目时,如何使 Spinner 功能停止崩溃我的应用程序?

How can I make Spinner function stop crashing my app when trying to get the selected item?

我无法从微调器获取字符串值而不会导致我的应用程序崩溃,我想根据 when 函数中的 2 对选定项做出选择

val convertFrom = spnConvertFrom.selectedItem.toString()
val convertTo = spnConvertTo.selectedItem.toString()
val value = initialAmount.toString()
var valor2= value.toDouble()
when {
    //Condicion
    (convertFrom.equals("NIO") && convertTo.equals("USD")) -> currencyConverted.apply {
        text = "Something"
    }
    else -> Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show()
}

我尝试将语法从 = 切换为 .equals() (同样的事情)阅读了一些关于它在比较时为 null 的内容,但不知道如何检查它,我是在 android

中对 Kotlin 和编程还很陌生

有几行可能导致 NPE

  1. 您正在检索 selectedItem 的行。您可以通过在微调器实例
  2. 之后添加 ? 运算符来处理这些问题
  3. value 转换为 Double. You can avoid the error by using toDoubleOrNulland providing a default value in case thatvalue` 的行不是数字
  4. 设置currencyConvertedtext的行。如果它是可选的,您还应该在那里添加 ? 运算符:
 val convertFrom = spnConvertFrom?.selectedItem.toString()
 val convertTo = spnConvertTo?.selectedItem.toString()
 val value = initialAmount.toString()
 var valor2 = value.toDoubleOrNull() ?: 0.0

when {
    //Condicion
    (convertFrom.equals("NIO") && convertTo.equals("USD")) -> currencyConverted?.text = "Something"
    else -> Toast.makeText(this, "Error", Toast.LENGTH_SHORT).show()
}