在Android中,如何使用不同的参数为不同的语言设置字符串格式?

在Android中,如何使用不同的参数为不同的语言设置字符串格式?,android,Android,我有两个字符串资源。main\values中的第一个是英文的,没有字符串参数: <string name="example">Have a good day!</string> lint警告为“StringFormatInvalid”,说明为“Format string”示例“不是有效的格式字符串,因此不应将其传递给字符串。Format“您可以使用string.Format(string args,Object…args)方法。更多信息。在中,您的方法没有任何问题。即

我有两个字符串资源。main\values中的第一个是英文的,没有字符串参数:

<string name="example">Have a good day!</string>


lint警告为“StringFormatInvalid”,说明为“Format string”
示例
“不是有效的格式字符串,因此不应将其传递给
字符串。Format

您可以使用string.Format(string args,Object…args)方法。更多信息。在

中,您的方法没有任何问题。即使参数太多,格式化程序也能完美工作。剩下的争论就这样被放弃了

Lint警告用于指示代码中可能出现的意外错误。但是,如果您知道自己在做什么,您可以通过向封闭的方法或类添加
@suppressint(“StringFormatMatches”)
注释来抑制警告。

这里对此进行了解释!
您必须创建自定义区域设置并将新配置设置为getResource

请编辑问题并显示lint警告这是正式的lint规则:如果字符串包含“%”字符,则格式字符串无效,然后,该字符串可能是一个格式化字符串,它将从Java代码传递到string.format,以用特定值替换每个“%”出现。此lint警告检查两个相关问题:(1)格式化无效的字符串,这意味着String.format在尝试使用格式字符串时将在运行时引发异常。(2) 包含“%”的字符串不是传递给String.format调用的格式化字符串。在这种情况下,需要将“%”转义为“%”。注意:并非所有看起来像格式化字符串的字符串都适合String.format使用;例如,它们可能包含适用于android.text.format.Time#format()的日期格式。Lint无法始终确定字符串是日期格式,因此在这些情况下可能会收到错误警告。有关如何在这种情况下抑制错误的信息,请参阅抑制帮助主题。我决定在英文XML文件中添加抑制警告
<string name="example">Bonne journée M. %1$s!</string>
textView.setText(getString(R.string.example, name));