Android:strings.xml百分比格式调用getString()抛UnknownFormatConversionException
问题解决:Android strings.xml格式化字符串中百分号的正确写法
你当前的转义方式是错误的,在Android的strings.xml里,要在带动态参数的格式化字符串中保留普通百分号,不能用\%,得用两个连续的百分号%%。
错误原因
当你调用getString(R.string.rate_format, "11")时,系统会把字符串当作格式化模板解析。你写的\%会被解析器误认为是一个格式转换符的开头(%后面需要跟合法的转换标识,比如s、d),但%后面跟的是\,这不是合法的转换符,所以直接抛出UnknownFormatConversionException。
正确写法
把strings.xml里的格式字符串改成:
<string name="rate_format">%1$s%%</string>
再调用getString(R.string.rate_format, "11"),就能得到预期的11%结果。
补充说明
如果只是单纯要显示百分号(不需要动态参数),直接写%就可以;但只要是需要配合getString动态传参的格式化模板,就必须用%%来表示普通百分号,避免和格式化转换规则冲突。
内容的提问来源于stack exchange,提问作者David Read
相关产品推荐
相关产品推荐

