@HolodnoDev

Android, при смене языка в системе обновляются не все ресурсы, что делать?

Привет. Имеется активити с формой создания записи - текстовые поля, автокомплит, чекбоксы, подписи ко всему этому и т.п.
В строковых ресурсах прописаны два языка.
Если свернуть приложение, сменить язык в системе и вернуться обратно, происходит следующее:
- в целом строковые ресурсы переключаются на нужный язык
- текст в автокомплите не переключается, при нажатии на поле список автокомплита не выпадает (хотя смотрел логкатом, он там есть). пробовал сделать вручную setText, ничего не происходит. Вообще непонятно по какому событию происходит обновление строкового ресурса в виджете и как это отловить.
- стандартное сообщение валидации в текстовом поле, если оно вылезло до переключения языка тоже не меняет текст. если вызвать сообщение валидации повторно, то оно уже будет с правильным языком.

В общем полный копец. Вот и думаю - то ли принудительно перезагружать активити (но тогда не понятно как быть с пользовательским вводом), то ли делать какие-то костыли для валидации и автокомплита.

Пытался также отловить широковещательное сообщение о смене языка, но толку в этом нет, ибо оно приходит когда приложение ещё свёрнуто, а ресурсы обновляются когда активити появляется на экране.

Видел эту тему https://qna.habr.com/q/12584, но вопрос остался.
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 2
@WaterSmith
Android-разработчик. Java, Kotlin
ибо оно приходит когда приложение ещё свёрнуто, а ресурсы обновляются когда активити появляется на экране.

Для начала вам нужно использовать MVP или MVVM
Например, если у вас будет MVVM, вы по оповещению, когда язык изменится, измените состояние вьюмодели, а при открытии активити обновите его, в соответствии с новым состоянием.
Ответ написан
TranE91
@TranE91
Senior Android Engineer
Очень похоже на решение проблемы:
https://stackoverflow.com/questions/18365354/local...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы