首个Kotlin/Android计算器APP点击加号按钮崩溃报错求助
问题解决:计算器点击加号崩溃
错误根源
崩溃的核心问题是你错误地把EditText控件对象本身转成了字符串,而非获取输入框内的用户输入内容。从报错信息里的字符串androidx.appcompat.widget.AppCompatEditText{1c90a17 VFED..CL. ........ 275,535-855,659 #7f080007 app:id/Number1 aid=1073741824}就能看出,n1.toString()拿到的是控件的对象描述,不是用户输入的数字,自然无法转成Double,触发NumberFormatException。
修正步骤
修正控件类型声明
把n1和n2的类型从View改为EditText,这样可以直接调用text属性获取输入内容:val n1 = findViewById<EditText>(R.id.Number1) val n2 = findViewById<EditText>(R.id.Number2)正确获取输入并处理异常
在点击事件里,先获取输入框的文本内容,再转成数字,同时处理空输入或非数字的情况,避免再次崩溃:add.setOnClickListener { // 获取输入框文本 val num1Str = n1.text.toString() val num2Str = n2.text.toString() // 检查空输入 if (num1Str.isEmpty() || num2Str.isEmpty()) { result.text = "请输入完整数字" return@setOnClickListener } // 安全转成Double,非数字返回null val num1 = num1Str.toDoubleOrNull() val num2 = num2Str.toDoubleOrNull() // 检查是否为有效数字 if (num1 == null || num2 == null) { result.text = "请输入有效数字" return@setOnClickListener } // 计算并显示结果 val sumResult = num1 + num2 result.text = sumResult.toString() }
简化版(带默认值)
如果不需要复杂提示,只想快速修复崩溃,可以用toDoubleOrNull()配合空值默认值:
add.setOnClickListener { val num1 = n1.text.toString().toDoubleOrNull() ?: 0.0 val num2 = n2.text.toString().toDoubleOrNull() ?: 0.0 result.text = (num1 + num2).toString() }
内容的提问来源于stack exchange,提问作者Drew Brummett
相关产品推荐
相关产品推荐

