无效格式包含%

时间:2017-02-02 09:49:47

标签: java android string string-formatting getstring

我已经阅读过有关此链接警告的其他帖子,但他们没有解决我的问题而且我仍然没有得到我做错的事。

在默认文件strings.xml中,我有:

 <string name="rating_dialog">You\'re about to rate this app with %s stars.</string>

稍后,我在覆盖onClick方法中调用它:

 v.getContext().getString(R.string.rating_dialog, String.valueOf(rating))

它看起来像:

You're about to rate this app with {String.valueOf(rating)} stars.

链接警告:

Format string is not a valid format string so it should not be passed to string.format

注意:

vViewratingint值。

我已检查其他语言的其他strings.xml文件,所有翻译似乎都没问题。

解决:对于hindi string.xml,而不是%s,只有%。

2 个答案:

答案 0 :(得分:1)

您需要为在XML中定义的每个占位符分配一个位置。

然后你的字符串变为:

<string name="rating_dialog">You\'re about to rate this app with %1$s stars.</string>

答案 1 :(得分:0)

你可以这样做:

在string.xml中:

如果要分配整数值,请使用&#34;%1 $ d&#34; ,如果是String,则使用&#34;%1 $ s&#34; < /强>

1 用于定义位置。如果你想使用多个值,那么你可以使用&#34;%1 $ d&#34;,&#34;%2 $ d&#34;,....等

<string name="rating_dialog">You\'re about to rate this app with %1$d stars.</string>

然后在代码中执行:

v.getContext().getString(R.string.rating_dialog, rating);

希望它对你有所帮助。