当我无输入时按退格按钮时,Android计算器应用会崩溃。
这段代码是用Kotlin编写的,IDE是Android Studio,而BackSpace在MainActivity.kt中的下面代码中标记为tvBack。
我应该如何处理此崩溃?
//BACK
tvBack.setOnClickListener{
val string =tvResult.text.toString()
val string2=tvExpression.text.toString()
if(string.isEmpty()){
tvExpression.text = string2.substring(0,string2.length-1)
}else if(string2.isNotEmpty()){
tvResult.text=""
}else if(string2.isEmpty()){
return@setOnClickListener
}
请您参考如下方法:
问题是这一行:
tvExpression.text = string2.substring(0,string2.length-1)
如果您的string2为空,则
string2.length
为0,因此此行的计算结果为
tvExpression.text = string2.substring(0,-1)
因此,这是无效的子字符串。
因此,在生成子字符串之前,应首先检查字符串是否不为空。您可以通过在
tvBack.setOnClickListener{
之后添加以下行来做到这一点:
if (string2.length == 0) return;
//编辑:
请将您的代码编辑为以下内容:
tvBack.setOnClickListener{
val string =tvResult.text.toString()
val string2=tvExpression.text.toString()
if(string2.isNotEmpty()){
tvExpression.text = string2.substring(0,string2.length-1)
tvResult.text=""
}
您的新错误的问题是,您的检查错误。
如果字符串为 而不是为空,则只想生成和使用子字符串。您的代码则相反