Android studio 后台空间导致计算器崩溃
每当我在没有输入的情况下按下Back Space按钮时,Android计算器应用程序就会崩溃。 这段代码是用Kotlin编写的,IDE是Android Studio,在下面的代码中,BackSpace在MainActivity.kt中标记为tvBack 我该怎么处理这次车祸Android studio 后台空间导致计算器崩溃,android-studio,debugging,kotlin,crash,calculator,Android Studio,Debugging,Kotlin,Crash,Calculator,每当我在没有输入的情况下按下Back Space按钮时,Android计算器应用程序就会崩溃。 这段代码是用Kotlin编写的,IDE是Android Studio,在下面的代码中,BackSpace在MainActivity.kt中标记为tvBack 我该怎么处理这次车祸 //BACK tvBack.setOnClickListener{ val string =tvResult.text.toString() val stri
//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=""
}
新错误的问题是,您的检查错误。
你只想在字符串不是空的情况下生成和使用子字符串。你的代码做了相反的事情因此说谢谢是被禁止的,我应该说我感谢你的回答。另外:我刚刚意识到kotlin有一个内置的函数来检查字符串的空性,所以使用
string2.isEmpty()
在这里是一个很好的做法。它仍然不起作用,在我按“tvBack”多次后,当“tvResult”和“tvExpression”有“”值时,应用程序一直崩溃。我在上面编辑了代码,就像你提到的,我仍然收到问题编辑了我的解决方案,请检查