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() Если вы не укажете один, и это может вызвать трудно найти ошибки, когда устройства имеют свою собственную локаль по умолчанию. Кажется, что вам также нужно очистить свой проект в любом случае, как все остальные предложили.


использовать Локаль.getDefault () и чем очистить ваш проект.


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

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

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


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

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

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