Ответ 1
Очистка и восстановление проекта должны работать.
Кстати, вы можете использовать Locale.getDefault()
для "позаботиться" о текстах, не написанных на английском языке.
Я изначально называл String.format
следующим образом:
return String.format("%s %f %f", anotherString, doubleA, doubleB);
Что сделало Android Lint генерировать это предупреждение:
Неявно использование локали по умолчанию является общим источником ошибок: вместо этого используйте String.format(Locale,...)
Итак, я изменил его, чтобы использовать Locale.US
явно, на основе того, что я читал в http://developer.android.com/reference/java/util/Locale.html в разделе "Будьте осторожны с локалью по умолчанию":
return String.format(Locale.US, "%s %f %f", anotherString, doubleA, doubleB);
Почему Android Lint по-прежнему генерирует одно и то же предупреждение? Мне нужно очистить проект в Eclipse, чтобы избавиться от него, когда большинство предупреждений просто исчезают, как только исправляется линия нарушения. Я не уверен, что я делаю что-то неправильно или нет.
Очистка и восстановление проекта должны работать.
Кстати, вы можете использовать Locale.getDefault()
для "позаботиться" о текстах, не написанных на английском языке.
Подразумеваемая локаль по умолчанию в случае конвертации
Вызов String#toLowerCase()
или #toUpperCase()
без указания явного языкового стандарта является распространенным источником ошибок. Причина этого заключается в том, что эти методы будут использовать текущую локаль на пользовательском устройстве, и даже если код работает правильно при разработке приложения, в некоторых локалях произойдет сбой. Например, в турецком языке вместо "i" прописными буквами заменяется "я".
Если вы хотите, чтобы методы просто выполняли замену ASCII, например, для преобразования имени перечисления, вместо этого вызовите String#toUpperCase(Locale.US)
. Если вы действительно хотите использовать текущую локаль, вместо этого вызовите String#toUpperCase(Locale.getDefault())
.
http://developer.android.com/reference/java/util/Locale.html#default_locale
когда я упомянул локаль с форматом, предупреждение lint просто исчезло.
String.format(Locale.US,"%02d", selectedInt);
Вы можете отключить это предупреждение для всего приложения, gradle (Module: app)
код ниже в свой gradle (Module: app)
android {
...
lintOptions {
disable 'DefaultLocale'
}
...
}
Просто добавьте Ваш язык; для английского языка,
return String.format(Locale.ENGLISH, "% s% f% f", anotherString, doubleA, doubleB);