編集:下部に更新
私はアプリケーションでこれを呼び出しています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)
}
上記のコードを削除すると、機能します。