我正在开发具有多语言功能的应用程序,它支持landscape
和reverseLandscape
方向。它可以在棉花糖设备上正常工作。
但是在Nougat+
设备中,当我将方向从横向更改为反向横向时,似乎语言环境会重置为默认位置。此后,所有新创建的Activity
,Fragment
,Dialog
都具有英语。
BaseActivity
这是我简化的基本活动的样子
abstract class LocaleBaseActivity : AppCompatActivity() {
public override fun attachBaseContext(newBase: Context) {
super.attachBaseContext(refreshLocale(newBase, LanguageVO.getInstance().LocalizationCode[0]))
}
fun refreshLocale(context: Context, lang: String): Context {
val locale = Locale(lang.toLowerCase())
val configuration = context.resources.configuration // getBaseContext().
configuration.locale = locale
configuration.setLocale(Locale(lang.toLowerCase()))
context.resources.updateConfiguration(configuration, context.resources.displayMetrics)
Locale.setDefault(locale)
return context
}
}