web-dev-qa-db-fra.com

Android Avertissement ADT 21.0: utilisation implicite des paramètres régionaux par défaut

J'ai mis à jour ADT vers la version 21 et un nouvel avertissement est apparu dans ce code:

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

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

J'essaye donc:

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

Mais l'erreur restait! Comment résoudre ce problème?

57
rocknow

Vous devez utiliser Locale.getDefault() surtout si vous ne pouvez pas être sûr que votre texte sera toujours en anglais. De plus, les erreurs de peluches comme celle que vous rencontrez disparaissent généralement après avoir exécuté à nouveau les peluches ou nettoyé votre projet.

106
Gabriel Netto

Il vous suffit de nettoyer votre projet

31
Mahorad

En fait, utilisez Locale.getDefault() lorsque le but est de présenter du texte à l'utilisateur. Cependant, et c'est là tout l'intérêt de la vérification des peluches, vous devriez probablement utiliser Locale.US Chaque fois que l'objectif est la lisibilité/l'utilisation de la machine. Parce qu'il utilise déjà implicitement Locale.getDefault() si vous n'en spécifiez pas, et cela peut rendre difficile la recherche de bogues lorsque les périphériques ont leurs propres paramètres régionaux par défaut spécifiés. Il semble que vous devez également nettoyer votre projet de toute façon, comme tout le monde l'a suggéré.

6
Dandre Allison

utilisez Locale.getDefault () et nettoyez votre projet.

3
user1305041

C'est probablement un bug Lint. Essayez de couper toute la ligne de code

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

enregistrez, puis collez.

1
yazjisuhail

Le nettoyage du projet n'a pas fonctionné pour moi, j'ai donc ajouté les paramètres régionaux par défaut sur mon code:

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

Selon votre projet, vous voudrez peut-être jeter un œil à l'explication Locale .

1