如何在格式化字符串资源时使用integer类型参数?
解决方案
Android字符串资源的格式化占位符遵循Java Formatter语法规则,占位符末尾的字符代表预期接收的参数类型:s对应字符串、f对应浮点数、d对应十进制整数。你当前用的%1$s是字符串类型占位符,要适配整数参数只需调整占位符后缀即可:
步骤1:修改字符串资源定义
将占位符的s后缀替换为d:
<string name="temperature">%1$d °C</string>
步骤2:代码中传入整数参数
- Kotlin 调用示例:
val temperature = 26 val formattedTemp = getString(R.string.temperature, temperature)
- Java 调用示例:
int temperature = 26; String formattedTemp = getString(R.string.temperature, temperature);
兼容备选方案
如果该字符串资源有其他业务场景需要传入字符串参数,不方便修改原有占位符定义,也可以将整数转为字符串后传入原有占位符,不影响使用:
// 仅作为兼容方案,优先推荐修改占位符匹配参数类型 val formattedTemp = getString(R.string.temperature, temperature.toString())
内容的提问来源于stack exchange,提问作者Dante313
相关产品推荐
相关产品推荐

