Android — Изменение локали

#java #android #kotlin

#java #Android #kotlin

Вопрос:

Я испытываю странное поведение при изменении Locale . Все работало нормально для всех Android API levels . Пытаюсь изменить Locale мое приложение, но оно больше не работает. Кажется, все работает нормально при установке нового Locale -> AttachBaseContext -> Recreate Activity , но в конце я вижу только строки из English .

Какие рекомендации вы даете, или это может быть что-то не так с последней версией Android Studio 3.5 Canary 9 ?

Это моя пользовательская оболочка контекста :

 class MyContextWrapper(base: Context) : ContextWrapper(base) {
    companion object {
        @TargetApi(Build.VERSION_CODES.N)
        fun wrap(contextt: Context, newLocale: Locale): ContextWrapper {
            var context = contextt
            val res = context.resources
            val configuration = res.configuration
            when {
                VersionUtils.isAfter24 -> {
                    configuration.setLocale(newLocale)
                    val localeList = LocaleList(newLocale)
                    LocaleList.setDefault(localeList)
                    configuration.locales = localeList
                    context = context.createConfigurationContext(configuration)
                }
                VersionUtils.isAfter17 -> {
                    configuration.setLocale(newLocale)
                    context = context.createConfigurationContext(configuration)
                }
                else -> {
                    @Suppress("DEPRECATION")
                    configuration.locale = newLocale
                    @Suppress("DEPRECATION")
                    res.updateConfiguration(configuration, res.displayMetrics)
                }
            }
            return ContextWrapper(context)
        }
    }
}
  

Комментарии:

1. Это ошибка, о которой сообщалось в Androidx 1.1.0, найдите решение здесь: issuetracker.google.com/issues/140988416#comment6

Ответ №1:

Это была ошибка в AppCompat 1.1.0-alpha03 , наконец, она решена с помощью последней альфа-версии AppCompat 1.1.0-alpha04 .

Мне требуется 3 дня с половиной, чтобы понять, что пошло не так из-за многих рефакторингов, прежде чем заметить это поведение.

Это происходит, когда вы early alpha tester !

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