69

我最初是String.format这样称呼的:

return String.format("%s %f %f", anotherString, doubleA, doubleB);

这使得 Android Lint 产生了这个警告:

隐式使用默认语言环境是常见的错误来源:请改用 String.format(Locale, ...)

因此,根据我在http://developer.android.com/reference/java/util/Locale.html的“提防默认语言环境”部分下的内容,我将其更改为Locale.US显式使用:

return String.format(Locale.US, "%s %f %f", anotherString, doubleA, doubleB);

为什么 Android Lint 仍然会生成相同的警告?我必须在 Eclipse 中清理项目以摆脱它,当有问题的行修复后大多数警告就会消失。我不确定我是否做错了什么。

4

4 回答 4

62

清理和重建项目应该可以工作。

顺便说一句,您可能想用来Locale.getDefault()“照顾”不是用英文写的文本。

于 2013-06-04T21:37:27.193 回答
14

当我提到格式的语言环境时,lint 警告就消失了。

String.format(Locale.US,"%02d", selectedInt);

于 2018-06-15T06:53:02.663 回答
11

大小写转换中的隐含默认语言环境

调用String#toLowerCase()#toUpperCase()不指定明确的语言环境是常见的错误来源。原因是这些方法将使用用户设备上的当前语言环境,即使在您开发应用程序时代码似乎可以正常工作,但在某些语言环境中它会失败。例如,在土耳其语环境中,i 的大写替换不是 I。

如果您希望这些方法仅执行 ASCII 替换,例如转换枚举名称,请String#toUpperCase(Locale.US)改为调用。如果您真的想使用当前语言环境,请String#toUpperCase(Locale.getDefault())改为调用。

http://developer.android.com/reference/java/util/Locale.html#default_locale

于 2016-08-08T15:04:28.187 回答
3

只需添加您的语言环境;对于英语语言环境,

return String.format(Locale.ENGLISH,"%s %f %f", anotherString, doubleA, doubleB);

于 2019-08-30T22:41:51.223 回答