Android перезапускает активность, хотя изменения конфигурации локалей обрабатываются приложениемAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android перезапускает активность, хотя изменения конфигурации локалей обрабатываются приложением

Сообщение Anonymous »

Я следовал по пути реализации языковых настроек для каждого приложения в своем приложении.
Если пользователь открывает приложение в первый раз, ему предоставляется действие по выбору одного из доступных языков.
После того, как пользователь выбрал язык, вызывается API AppCompatDelegate, чтобы
сообщить Android об изменении языка.
// This code will be called some time after onCreate()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
val selectedLanguageIso = "en"
val appLocale: LocaleListCompat = LocaleListCompat.forLanguageTags(selectedLanguageIso)
AppCompatDelegate.setApplicationLocales(appLocale)
}

Поскольку я не хочу, чтобы Android воссоздавал это действие, я добавил флаг
android:configChanges="layoutDirection|locale" в манифесте вот так:


Но по какой-то причине android игнорирует этот флаг и по-прежнему воссоздает мою активность, но только при первом вызове AppCompatDelegate.setApplicationLocales.
Пользователь увидит странное мерцание перед переходом к следующему действию.
Это будет игнорироваться только в первый раз. Если я вручную меняю язык во второй раз,
тогда флаг учитывается.
Нужно отметить, что я отказался от автоматического сохранения локалей.
Поэтому в Android не будет языка при первом запуске приложения
, пока я не выполню передачу. Возможно, это имеет отношение к проблеме.




Кто-нибудь испытывает то же самое?
Изменить. Добавить мой текущий вариант обходного решения
Мой текущий обходной путь:
Я использую InitializePerAppLanguageUseCase в ViewModel моего первого действия.
ViewModel:
init {
initPerAppLanguage()
//...
}

private fun initPerAppLanguage() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
initializePerAppLanguage() //

Подробнее здесь: https://stackoverflow.com/questions/760 ... handled-by
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»