安卓计算器App回退键异常:StringBuilder未同步更新存储数值问题
问题根因
- 回退方法只修改了展示用的TextView文本,没有同步更新存储真实计算值的
strNumber变量,后续计算读取的是strNumber的旧值,所以结果和展示不符。 - 原回退方法的边界逻辑错误,调用清空方法做截断的逻辑完全不符合回退功能的要求。
修复方案
直接修改btnClickedBack方法,优先操作真实存储的strNumber变量,再同步更新界面展示:
private fun btnClickedBack() { if (strNumber.length > 1) { // 删除真实存储值的最后一位 strNumber.deleteCharAt(strNumber.lastIndex) // 同步更新界面展示 tvDisplay.text = strNumber.toString() } else { // 只剩1位时点击回退,直接重置为初始状态 btnClickedClear() } }
补充说明
如果你的btnClickedClear方法尚未实现完整的重置逻辑,需要补充该方法的实现:
private fun btnClickedClear() { strNumber.clear() strNumber.append("0") tvDisplay.text = strNumber operator = Operator.NONE isOperatorClicked = true no1 = 0.0 }
内容的提问来源于stack exchange,提问作者Toké
相关产品推荐
相关产品推荐

