Java Android-语言环境转换器
我在更改Java Android-语言环境转换器,java,android,kotlin,Java,Android,Kotlin,我在更改Locale时遇到了一种奇怪的行为。对于每个Android API级别,一切都很正常。 正在尝试更改我的应用程序的区域设置,但它不再工作。 当设置新的Locale->AttachBaseContext->Recreate Activity时,一切似乎都很好,但最后我只看到了English中的字符串 您给出了哪些建议,或者这可能是最新的安卓Studio 3.5 Canary 9出现了问题 这是我的自定义上下文包装: class MyContextWrapper(base: Context)
Locale
时遇到了一种奇怪的行为。对于每个Android API级别
,一切都很正常。
正在尝试更改我的应用程序的区域设置
,但它不再工作。
当设置新的Locale->AttachBaseContext->Recreate Activity
时,一切似乎都很好,但最后我只看到了English
中的字符串
您给出了哪些建议,或者这可能是最新的安卓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)
}
}
}
这是AppCompat 1.1.0-alpha03中的一个bug,最后用最新的alpha
AppCompat 1.1.0-alpha04解决了它
我花了3天半的时间去理解由于多次重构而出现的问题,然后才注意到这种行为
当您是早期alpha测试仪时会发生这种情况
作为建议,因为这在我之前发生过(不同的bug),所以在继续改进和重构应用程序之前,请确保在更新到另一个alpha时测试您正在使用的所有功能。:) 这是AppCompat 1.1.0-alpha03中的一个bug,最后用最新的alphaAppCompat 1.1.0-alpha04解决了它
我花了3天半的时间去理解由于多次重构而出现的问题,然后才注意到这种行为
当您是早期alpha测试仪时会发生这种情况
作为建议,因为这在我之前发生过(不同的bug),所以在继续改进和重构应用程序之前,请确保在更新到另一个alpha时测试您正在使用的所有功能。:) 这是Androidx 1.1.0上报告的错误,请在此处找到解决方案:Androidx 1.1.0上报告的错误,请在此处找到解决方案: