You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 21:40:01