Код: Выделить всё
private fun setLocale(context: Context, language: String): Context {
//...persist here. persisting works fine
return if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N)
updateResources(context, language)
else
updateResourcesLegacy(context, language)
}
@TargetApi(Build.VERSION_CODES.N)
private fun updateResources(context: Context, language: String): Context {
val locale = Locale(language)
Locale.setDefault(locale)
val configuration = context.resources.configuration
configuration.setLocale(locale)
configuration.setLayoutDirection(locale)
return context.createConfigurationContext(configuration)
}
Я обнаружил, что этот код перестал работать после обновления до более новой версии androidx. appcompat:appcompat. Я мог бы сузить круг: он работает в 1.2.0-alpha01 и не работает в 1.2.0-alpha02.
Я вижу в примечаниях к выпуску для 1.2.0-alpha02 было 3 изменения, связанных с контекстом: https://developer.android.com/jetpack/a ... .0-alpha02
< ul>
[*]Безопасно, что базовый контекст всегда является оболочкой (aosp/1194355).
[*]Добавлены некоторые улучшения, позволяющие более разумно изменять конфигурацию базового контекста (aosp/1204543). )
[*]Отключено createConfigurationContext() для Robolectric (aosp/1186218)
Подробнее здесь: https://stackoverflow.com/questions/634 ... android-10
Мобильная версия