我有两个字符串资源。 main \ values中的第一个是英文,并没有字符串参数:
<string name="example">Have a good day!</string>
但是在法语中,在values-fr下,我们有一个不同的短语和一个参数,如下:
<string name="example">Bonne journée M. %1$s!</string>
我应该如何使用资源字符串格式化程序?这是有效的,但它看起来并不正确(并且它会产生一个lint警告):
textView.setText(getString(R.string.example, name));
lint警告是&#34; StringFormatInvalid&#34;并且描述是&#34;格式字符串&#39; example
&#39;不是有效的格式字符串,因此不应将其传递给String.format
&#34;
答案 0 :(得分:3)
你的方法没有错。即使参数太多,格式化程序也能完美运行。剩下的争论就会被删除。
Lint警告表示代码中可能存在意外错误。但是如果你知道自己在做什么,你可以通过将@SuppressLint("StringFormatMatches")
注释添加到封闭方法或类中来抑制警告。
答案 1 :(得分:0)
您可以使用String.format(String args,Object ... args)方法。更多信息。在http://developer.android.com/reference/java/lang/String.html#format%28java.lang.String,%20java.lang.Object...%29
答案 2 :(得分:0)
这里解释了! http://programmerguru.com/android-tutorial/android-localization-at-runtime/ 您必须创建自定义区域设置并将新配置设置为getResource