Предупреждение Android ADT 21.0: неявно использовать стандартную локаль

Я обновил ADT до 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"))

Но ошибка все еще осталась! Как это исправить?

Ответ 1

Вы должны использовать Locale.getDefault(), особенно если вы не уверены, что ваш текст всегда будет на английском языке. Кроме того, ошибки ворса, подобные тем, которые вы обычно исчезаете, снова запускаются снова или очищают ваш проект.

Ответ 2

Вам просто нужно очистить свой проект, нажав:

Build > Clean Project или Build > Rebuild Project

Ответ 3

Собственно, используйте Locale.getDefault(), когда целью является предоставление текста пользователю. Тем не менее, и в этом весь смысл проверки Lint, вы, вероятно, должны использовать Locale.US всякий раз, когда цель заключается в удобочитаемости/использовании машины. Поскольку он уже неявно использует Locale.getDefault(), если вы его не укажете, и это может вызвать затруднения в обнаружении ошибок, если у них указан свой собственный локаль по умолчанию. Похоже, вам также нужно очистить свой проект в любом случае, как и все остальные.

Ответ 4

используйте Locale.getDefault() и очистите проект.

Ответ 5

Вероятно, это ошибка Lint. Просто попробуйте вырезать всю строку кода

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

сохранить, затем вставить.

Ответ 6

Очистка проекта не помогла мне, поэтому я добавил локаль по умолчанию в свой код:

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

В зависимости от вашего проекта вы можете взглянуть на Locale.