这个格式string有什么问题?

我有这样的string

<string name="q_title" formatted="false">Item %d of %d</string> 

我正在使用它在String.format像这样:

 String log = String.format(getString(R.string.q_title), 100, 500); 

到目前为止,我没有观察到输出的问题。

不过,Android Studio中的代码检查给了我:

格式string“q_title”不是有效的格式string,因此不应将其传递给String.format

为什么?

Solutions Collecting From Web of "这个格式string有什么问题?"

你的string应该是

 <string name="q_title" formatted="false">Item %1$d of %2$d</string> 

和代码

 String log = getString(R.string.q_title, 100, 500); 

当你有多个参数时,你需要用1 $,2 $ … n $来标记它们。 在阿拉伯语顺序是颠倒的,所以他们需要知道如何正确地改变它。

getString(id, args...)本身执行格式。

对于百分比,以下为我工作。

 <string name="score_percent">%s%%</string> getString(R.string.score_percent,"20") 

如果你正在处理整数取代由D

 <string name="score_percent">%d%%</string> 

对于那些仍然在寻找这个答案的人来说,正如Blackbelt发布的链接所暗示的那样,正确的string格式是:

 <string name="q_title">Item %1$d of %2$d</string> 

当心逃避所有特殊字符

我遇到了这个string的问题,因为我忘了在结尾处转义百分比字符“%”。

 <string name="market_variation_formatter">%s %</string> 

好逃脱的string是:

 <string name="market_variation_formatter">%s \%</string>