【发布时间】:2019-11-29 07:23:08
【问题描述】:
我想在 App 中更改我的语言(或从 SQLite 数据库中保存的变量中设置它)。它正在工作,但它的行为真的很奇怪。如果我打开我的应用程序,它将在onCreate 中更改Locale,但如果我从MainActivity 开始新活动,则新活动(在应用程序启动后是全新的 - 之前从未停止/暂停)使用默认系统语言。如果我退出这个 Activity 并再次启动 Intent,它会突然变成保存的语言。只有第一次启动是加载系统语言。
我有我的 Activity 抽象类,它扩展了我的应用程序中的所有活动。
代码:
lateinit var app: App
override val coroutineContext = Job()
override fun onCreate(si: Bundle?) {
app = application as App
LocaleHelper.changeLocale(this, app.getSavedLanguage())
super.onCreate(si)
}
class LocaleHelper {
companion object{
fun changeLocale(context: Context, lang: String){
val newLocale = Locale(lang)
Locale.setDefault(newLocale)
val res = context.resources
val conf = res.configuration
conf.setLocale(newLocale)
res.updateConfiguration(conf, res.displayMetrics)
}
}
}
【问题讨论】:
标签: android kotlin android-activity android-configchanges