web-dev-qa-db-ja.com

Android ADT 21.0警告:暗黙的にデフォルトのロケールを使用

ADTをv。21に更新し、このコードに新しい警告が表示されました。

if (e.getMessage().toLowerCase().contains("blabla"))

Implicitly using the default locale is a common source of bugs: Use toLowerCase(Locale) instead

だから私は試します:

if (e.getMessage().toLowerCase(Locale.ENGLISH).contains("blabla"))

しかし、まだエラーが残っています!これをどのように修正しますか?

57
rocknow

特にテキストが常に英語であることを確信できない場合は、Locale.getDefault()を使用する必要があります。また、lintを再度実行するかプロジェクトをクリーンアップすると、通常発生しているようなlintエラーが消えます。

106
Gabriel Netto

あなたは単にあなたのプロジェクトをきれいにする必要があります

31
Mahorad

実際、ユーザーにテキストを表示することが目的の場合は、Locale.getDefault()を使用します。ただし、これがLintチェックの重要なポイントであるため、目標がマシンの可読性/使用性である場合は常に_Locale.US_を使用する必要があります。 Locale.getDefault()を指定しない場合、すでに暗黙的に_を使用しているため、デバイスに独自のデフォルトロケールが指定されている場合、バグを見つけるのが困難になる可能性があります。他の皆が提案したように、どちらの方法でもプロジェクトをきれいにする必要があるようです。

6
Dandre Allison

locale.getDefault()を使用して、プロジェクトをクリーンにします。

3
user1305041

これはおそらくLintのバグです。コードの行全体をカットしてみてください

if (e.getMessage().toLowerCase(Locale.ENGLISH).contains("blabla"))

保存してから貼り付けます。

1
yazjisuhail

プロジェクトのクリーニングがうまくいかなかったため、コードにデフォルトのロケールを追加しました。

String.format(Locale.getDefault(), "firstname: %s, lastname: %s", firstName, lastName));

プロジェクトによっては、 Locale の説明をご覧ください。