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 54

6 ответов:

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