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