Я просто столкнулся с этой проблемой при тестировании языковой установки в настройках против постоянных значений:Android new Locale («en_US») и Locale.US отличаются?
(new Locale("en_US")).equals(Locale.US) == false
При взгляде на детали получается, что новый Locale("en_us")
возвращает объект с кодом языка «en_US» и код страны, который является строкой нулевой длины, тогда как Locale.US
возвращает объект с кодом языка «en» и кодом страны «US». Locale("en","US")
возвращает тот же результат, что и Locale.US, поэтому легко избежать этой проблемы, но является ли это ожидаемым поведением конструкторов Locale?
Это неправильный конструктор. Один параметр определяет язык, en_US по сравнению с США, как ожидалось. Используйте Locale (String language, String country), как вы уже сказали. –