编辑:在底部更新
我在应用程序中调用它onCreate
:AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
然后,当我进入设备设置(设置 -> 显示 -> 夜间模式(开关:开/关))时,我将恢复我的应用程序,但未应用主题。无论我是在设备设置中打开还是关闭夜间模式,都不会应用主题。
我还添加了一个断点,并且我检查了以下内容是否返回我false
,即使设备设置中的暗模式已打开(注意:应用程序是在暗模式关闭的情况下启动的)。
fun isNightMode(app: Application): Boolean {
return when(app.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK) {
Configuration.UI_MODE_NIGHT_NO -> false
Configuration.UI_MODE_NIGHT_YES -> true
else -> false
}
}
application's
当我从设备设置更改主题时,资源似乎没有更新。
出于调试目的,我在 Application 类中覆盖了以下函数:
override fun onConfigurationChanged(newConfig: Configuration?) {
super.onConfigurationChanged(newConfig)
}
它被调用了。
编辑:看起来这是导致问题的原因。在 Application 类中有这个:
override fun attachBaseContext(base: Context) {
val locale = Locale("de", "DE")
Locale.setDefault(locale)
val resources = base.resources
val configuration = Configuration(resources.configuration)
configuration.setLocale(locale)
val baseContext = base.createConfigurationContext(configuration)
super.attachBaseContext(baseContext)
}
如果我删除上面的代码,它就可以工作。