Предупреждение 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 или очистки вашего проекта.

 Gohan29 июн. 2016 г., 11:11
Привет я нене знаю почемуиспользование локали по умолчанию является распространенным источником ошибок " какой-нибудь баг на этот счет?
 carbonr20 июл. 2013 г., 00:44
toUpperCase(Locale.getDefault()); и теперь я получаюLocale cannot be resolved
 rocknow18 нояб. 2012 г., 22:31
Я очистил проект и ошибка исчезла. Благодарю.
 Edward Falk03 февр. 2016 г., 23:24
Дон»t строковые функции просто используют Locale.getDefault () внутри, если вы неуказать локаль?
 mc.dev25 февр. 2016 г., 18:41
Какая причина сделать это, если этоИспользуется по умолчанию внутри метода toUpperCase (): <код>     public String toUpperCase () {return CaseMapper.toUpperCase (Locale.getDefault (), this, count); } </ Код>

Вам просто нужно очистить свой проект

 rocknow20 нояб. 2012 г., 11:40
смотри мой комментарий к предыдущему ответу
 The incredible Jan16 февр. 2018 г., 11:55
@DroidDev Вы должны прочитать вопрос: "Поэтому я пытаюсь: if (e.getMessage (). ToLowerCase (Locale.ENGLISH) .contains ("блаб»)) Но ошибка все же осталась! Как это исправить?
 DroidDev20 июл. 2015 г., 14:56
Можете ли вы объяснить, "как" проект очистки удаляет эти предупреждения иЗачем" пользователь не долженсделать что-то, чтобы устранить эти предупреждения, а просто очистить проект и двигаться дальше?

На самом деле, используйтеLocale.getDefault() когда цель состоит в том, чтобы представить текст пользователю. Однако, и в этом весь смысл проверки Lint, вы, вероятно, должны использоватьLocale.US всякий раз, когда целью является удобочитаемость / использование машины. Потому что он уже неявно используетLocale.getDefault() если ты неНе указывайте его, и это может привести к трудностям при поиске ошибок, если для устройств задана их собственная локаль по умолчанию. Кажется, что вы также должны очистить свой проект в любом случае, как и все остальные.

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

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

В зависимости от вашего проекта, вы можете посмотреть наместо действия объяснение.

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

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

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

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

Ваш ответ на вопрос