私はもともとこの方法で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でプロジェクトをクリーンアップして削除する必要があります。私が何か間違ったことをしているかどうかはわかりません。
プロジェクトのクリーニングと再構築が機能するはずです。
ところで、あなたは英語で書かれていないテキストを「気にする」ためにLocale.getDefault()
を使いたいかもしれません。
大文字と小文字の変換における暗黙のデフォルトロケール
明示的なロケールを指定せずに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
ロケールをフォーマットで言及したとき、リント警告は消えました。
String.format(Locale.US,"%02d", selectedInt);
アプリ全体でこの警告を無効にするには、gradle (Module: app)
のコードの下に配置します
Android {
...
lintOptions {
disable 'DefaultLocale'
}
...
}
ロケールを追加するだけです。英語ロケールの場合、
return String.format(Locale.ENGLISH、 "%s%f%f"、anotherString、doubleA、doubleB);