Android Kotlin项目运行时setText拼接文本报错如何解决?
问题成因
- 该报错由Android Lint的静态代码检查规则触发,若项目配置了Lint错误阻断构建,会导致打包/安装失败,容易被误认为是运行时异常。
- 禁止直接拼接字符串传给
setText的核心原因有两个:- 不支持国际化适配:不同语言的语序存在差异,例如部分语言会将总量前置展示为「总进度/当前进度」,硬编码的拼接语序无法适配多语言场景,会出现语法错误。
- 维护成本高:硬编码的拼接逻辑散落在业务代码中,后续需要修改文案格式时需要逐处修改,容易出现漏改、不一致的问题。
解决方法
- 首先在项目的
res/values/strings.xml中定义带占位符的字符串资源:
<!-- %1$d 表示第一个整数类型占位符,%2$d 表示第二个整数类型占位符 --> <string name="progress_display">%1$d/%2$d</string>
- 在Kotlin业务代码中调用
getString方法填充占位符后赋值给TextView:
tvPro.text = getString(R.string.progress_display, mCurrentPosition, proBar.max)
- 若在Fragment、Adapter等非Context直接持有场景,需要使用合法Context调用:
context?.getString(...)或requireContext().getString(...) - 若后续需要适配多语言,仅需在对应语言的
strings.xml文件中调整占位符位置即可,无需修改业务代码。
内容的提问来源于stack exchange,提问作者Rashinda Thulakkana
相关产品推荐
相关产品推荐

