#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
!
В качестве предложения, поскольку это случалось со мной раньше (другая ошибка), просто обязательно протестируйте все функции, которые вы используете при обновлении до другой альфа-версии, прежде чем продолжать улучшать и реорганизовывать приложение. 🙂 🙂