Оказывается, есть странная ошибка, когда только первый при создании WebView сбрасывает режим пользовательского интерфейса. Для меня то, что происходило, было:
-Приложение инициализируется, а ночной режим установлен на
-Некоторый пользовательский интерфейс загружается в начальном действии с правильными цветами
-Асинхронный вызов сделан для извлечения контента
-WebView создается во вторичном фрагменте, сбрасывая режим пользовательского интерфейса
-Асинхронный возврат вызовов, загрузка элементов пользовательского интерфейса в обычном режиме
Решение (которое я нашел здесь ) заключается в инициализации фиктивного WebView при запуске приложения, которое нигде не используется перед включением ночного режима, чтобы в следующий раз использовать его. не будет сбрасывать режим пользовательского интерфейса. Так что-то вроде этого:
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
val nightModeEnabled = //get value from shared prefs or wherever you are storing this flag
if (nightModeEnabled) {
Timber.d("Manually instantiating WebView to avoid night mode issue.");
try {
WebView(applicationContext)
} catch (e: Exception) {
Timber.e("Got exception while trying to instantiate WebView to avoid night mode issue. Ignoring problem.", e)
}
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
}
}
}