Android - Locale Changer - PullRequest
       4

Android - Locale Changer

0 голосов
/ 04 апреля 2019

Я испытываю странное поведение при изменении 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 Ответ

0 голосов
/ 05 апреля 2019

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...