如何在字符串资源中使用十进制数字(双数据类型)作为占位符。

我想在String资源的占位符中使用一个以上的数据类型,但每当我尝试使用一个数字作为数值时,就会返回一个错误。

Kotlin

val currentLocale = Locale.getDefault()
val distanceWalked = 5.2
val numberFormatter: NumberFormat
val amountOut: String
numberFormatter = NumberFormat.getNumberInstance(currentLocale)
amountOut = numberFormatter.format(distanceWalked)

tv.txt = getString(R.string.distance_decimalnumber_placeholder,amountOut,"*")

搅拌资源

<string name="distance_decimalnumber_placeholder">You have walked %1$d%2$s metres</string>

预期结果

你已经走了5.2*米

错误

java.util.IllegalFormatConversionException: d != java.lang.Double

在distance_decimalnumber_placeholder中格式化参数’#1’的参数类型错误:转换为’d’,收到的是String(方法调用中的参数#2)。

解决方案:

第一个错误 d 是为ints

问题是:

你已经转换为字符串了 amountOut = numberFormatter.format(distanceWalked) 你现在需要用字符串代替

解决办法。你不需要使用 $f 你需要使用 $s

tv.txt = getString(R.string.distance_decimalnumber_placeholder,amountOut /* this is a string also*/ ,"*")
<string name="distance_decimalnumber_placeholder">You have walked %1$s%2$s metres</string>

给TA打赏
共{{data.count}}人
人已打赏
未分类

自定义域名的ALIAS记录与A记录?

2022-9-13 13:56:38

未分类

在Python代码中创建的SchemaDatabase没有出现在MySQL Workbench中MySQL服务器上。

2022-9-13 13:56:40

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索