Android studio 后台空间导致计算器崩溃

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 Space按钮时,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=""
        }
新错误的问题是,您的检查错误。
你只想在字符串不是空的情况下生成和使用子字符串。你的代码做了相反的事情

因此说谢谢是被禁止的,我应该说我感谢你的回答。另外:我刚刚意识到kotlin有一个内置的函数来检查字符串的空性,所以使用
string2.isEmpty()
在这里是一个很好的做法。它仍然不起作用,在我按“tvBack”多次后,当“tvResult”和“tvExpression”有“”值时,应用程序一直崩溃。我在上面编辑了代码,就像你提到的,我仍然收到问题编辑了我的解决方案,请检查