我在string.xml中使用占位符%1 $ d获取int
值,然后我想在同一%
中显示TextView
个签名,以便它%
<string name="uploadProgress">%1$d%<string>
1}}。所以我就这样使用它。
int progress = 10;
textView.setText(String.format(getString(R.string.uploadProgress), progress));
现在在Java Code中,我就这样使用它了。
%
但它显示:
java.util.UnknownFormatConversionException:Conversion:
我试过:
%
代替%1$d
%
和{{1}}之间加一个空格(但我不想要空间
实际上。)但没有运气。我怎样才能做到这一点?我已经看了另外一些SO解决问题,但我找不到特别的问题。
答案 0 :(得分:5)
我也遇到过这种情况。有两种方法可以转义XML字符串资源中的文字百分比符号。
对于您的情况(带参数的字符串,例如%1$d
),您应使用%%
来转义百分比符号字面值。
如果您的字符串没有参数,那么您应该使用\u0025
来转义文字百分号。
如果您在不带参数的字符串中使用%%
,则getString()
会将其解析为文字%%
而不是转义它。如果您在带有参数的字符串中使用\u0025
,那么getString()
会在尝试将%
视为格式参数时崩溃。
答案 1 :(得分:2)
如果您的字符串资源没有参数,那么您可以使用formatted =“false”属性。
在您的情况下,您需要使用双倍 - %