Ответ 1
Вы должны использовать Locale.getDefault()
, особенно если вы не уверены, что ваш текст всегда будет на английском языке.
Кроме того, ошибки ворса, подобные тем, которые вы обычно исчезаете, снова запускаются снова или очищают ваш проект.
Я обновил 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"))
Но ошибка все еще осталась! Как это исправить?
Вы должны использовать Locale.getDefault()
, особенно если вы не уверены, что ваш текст всегда будет на английском языке.
Кроме того, ошибки ворса, подобные тем, которые вы обычно исчезаете, снова запускаются снова или очищают ваш проект.
Вам просто нужно очистить свой проект, нажав:
Build > Clean Project
или Build > Rebuild Project
Собственно, используйте Locale.getDefault()
, когда целью является предоставление текста пользователю. Тем не менее, и в этом весь смысл проверки Lint, вы, вероятно, должны использовать Locale.US
всякий раз, когда цель заключается в удобочитаемости/использовании машины. Поскольку он уже неявно использует Locale.getDefault()
, если вы его не укажете, и это может вызвать затруднения в обнаружении ошибок, если у них указан свой собственный локаль по умолчанию. Похоже, вам также нужно очистить свой проект в любом случае, как и все остальные.
используйте Locale.getDefault() и очистите проект.
Вероятно, это ошибка Lint. Просто попробуйте вырезать всю строку кода
if (e.getMessage().toLowerCase(Locale.ENGLISH).contains("blabla"))
сохранить, затем вставить.
Очистка проекта не помогла мне, поэтому я добавил локаль по умолчанию в свой код:
String.format(Locale.getDefault(), "firstname: %s, lastname: %s", firstName, lastName));
В зависимости от вашего проекта вы можете взглянуть на Locale.