Проблема в этой строке:
tvExpression.text = string2.substring(0,string2.length-1)
Если ваша строка2 пуста, 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=""
}
Проблема для вашей новой ошибки было то, что вы сделали свои чеки неправильно. Вы хотите генерировать и использовать подстроку, только если строка не пуста. Ваш код сделал наоборот