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 снова или очистки вашего проекта.
на самом деле, использовать 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 объяснение.