Kotlin变量求和问题:setText提示需用带占位符的资源字符串
解决Android Lint提示:Do not concatenate text displayed with setText. Use resource string with placeholders.
这个Lint提示是Android官方推荐的代码规范,核心是让你的代码更适配多语言场景,同时遵循Android资源管理的最佳实践。下面是具体的解决步骤:
1. 添加带占位符的字符串资源
在res/values/strings.xml文件中定义一个带整数占位符的字符串:
<string name="sum_result">%d</string>
如果求和结果可能是浮点数,可将占位符改为%f或%.2f(保留两位小数)。
2. 修改代码中的setText逻辑
把直接拼接字符串的代码替换为使用getString()方法传入资源ID和计算结果:
val btnAdd = findViewById<Button>(R.id.btnAdd) val btnSub = findViewById<Button>(R.id.btnSub) // 优化:将控件引用移到点击事件外,避免重复查找控件 val tx1 = findViewById<TextInputEditText>(R.id.tx1) val tx2 = findViewById<TextInputEditText>(R.id.tx2) val result = findViewById<TextView>(R.id.result) btnAdd.setOnClickListener { // 优化:处理输入非数字的情况,避免App崩溃 val num1 = tx1.text.toString().toIntOrNull() ?: 0 val num2 = tx2.text.toString().toIntOrNull() ?: 0 // 使用资源字符串占位符设置文本 result.text = getString(R.string.sum_result, num1 + num2) }
额外优化说明
- 避免重复findViewById:每次点击事件内调用
findViewById会重复查找控件,提前初始化控件引用能提升性能。 - 处理输入异常:用户可能输入非数字内容,
toIntOrNull()会在转换失败时返回null,配合?: 0设置默认值,可防止App崩溃。
内容的提问来源于stack exchange,提问作者Mosbah Mohamed
相关产品推荐
相关产品推荐

