Android Kotlin薪资计算器滑动崩溃问题及类型转换咨询
问题解决:NumberFormatException崩溃修复
核心错误原因
你在calculateTax()方法中错误调用了salaryEditText.toString(),这会返回EditText控件的对象描述字符串(即日志中那串长文本),而非用户输入的薪资内容,导致转Int时抛出NumberFormatException。
修复后的代码
修改calculateTax()方法,同时增加空值和格式校验,避免后续崩溃:
private fun calculateTax(){ // 获取输入的文本内容并去除首尾空格 val salaryInput = salaryEditText.text.toString().trim() // 校验输入是否为空或非数字 if (salaryInput.isEmpty() || !salaryInput.all { it.isDigit() }) { netSalaryEditText.setText("请输入有效薪资") return } // 转换为Int类型 val grossSalary: Int = salaryInput.toInt() // 计算税后薪资(修正逻辑:税前薪资减去税费) val taxAmount: Float = (taxRateSlider.value / 100) * grossSalary val netSalary = grossSalary - taxAmount // 格式化显示,保留两位小数更友好 netSalaryEditText.setText(String.format("%.2f", netSalary)) }
注意:原代码缺失闭合calculateTax()方法的},记得补上。
额外优化建议
- 给
etSalary添加android:digits="0123456789"属性,限制仅能输入数字,减少非法输入 - 给
taxSlider设置默认值taxRateSlider.value = 0F,避免初始值异常
Kotlin+Android开发学习资源
免费资源
- Android官方开发者文档:官方出品,涵盖Kotlin语法、Android组件全知识点,覆盖入门到进阶全阶段
- Google Codelabs:步骤式实战教程,多为Kotlin+Android项目实践,适合边做边学
- Kotlin官方文档:系统学习Kotlin语法特性,掌握Android开发基础语言
- YouTube Android Developers官方频道:官方发布的技术讲解、实战演示视频,内容权威直观
付费资源
- Udemy「Android Kotlin Masterclass」:全面覆盖Android开发核心技能,项目驱动式教学
- Coursera Google Android开发专项课程:由Google工程师授课,体系化强,适合系统学习
- 国内极客时间Android相关专栏:针对国内开发者场景,讲解实用技巧与实战项目
内容的提问来源于stack exchange,提问作者Lyton_Spurz
相关产品推荐
相关产品推荐

