web-dev-qa-db-de.com

Android ADT 21.0 Warnung: Implizit das Standardgebietsschema verwenden

Ich habe ADT auf Version 21 aktualisiert und eine neue Warnung wurde in diesem Code angezeigt:

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

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

Also versuche ich:

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

Trotzdem blieb der Fehler bestehen! Wie kann das behoben werden?

57
rocknow

Sie sollten Locale.getDefault() verwenden, insbesondere wenn Sie nicht sicher sein können, dass Ihr Text immer in Englisch ist. Auch Flusenfehler wie der, den Sie normalerweise haben, verschwinden, nachdem Sie Flusen erneut ausführen oder Ihr Projekt bereinigen.

106
Gabriel Netto

Sie müssen nur Ihr Projekt bereinigen

31
Mahorad

Verwenden Sie Locale.getDefault(), um dem Benutzer Text zu präsentieren. Und das ist der springende Punkt bei der Flusenprüfung. Sie sollten wahrscheinlich Locale.US Verwenden, wenn das Ziel die Maschinenlesbarkeit/-nutzung ist. Weil es bereits implizit Locale.getDefault() verwendet, wenn Sie keine angeben, und dies dazu führen kann, dass Fehler nur schwer zu finden sind, wenn für Geräte ein eigenes Standardgebietsschema angegeben ist. Es scheint, dass Sie Ihr Projekt auch so oder so bereinigen müssen, wie alle anderen vorgeschlagen haben.

6
Dandre Allison

verwenden Sie Locale.getDefault () und bereinigen Sie dann Ihr Projekt.

3
user1305041

Es ist wahrscheinlich ein Lint Bug. Versuchen Sie einfach, die gesamte Codezeile auszuschneiden

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

speichern, dann einfügen.

1
yazjisuhail

Das Bereinigen des Projekts hat bei mir nicht funktioniert, daher habe ich meinem Code das Standardgebietsschema hinzugefügt:

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

Abhängig von Ihrem Projekt sollten Sie sich die Gebietsschema Erklärung ansehen.