Ошибка Android при загрузке неправильных цветов в ночном режиме - PullRequest
0 голосов
/ 15 января 2019

Отказ от ответственности: я уже нашел решение этой проблемы, но хотел опубликовать вопрос и ответ для других людей, так как мне потребовалось много времени, чтобы понять, почему это происходит.

Я столкнулся со странной проблемой, когда при открытии приложения в ночном режиме часть пользовательского интерфейса загружалась в правильных цветах ночного режима, а часть пользовательского интерфейса загружалась в обычных цветах.

1 Ответ

0 голосов
/ 15 января 2019

Оказывается, есть странная ошибка, когда только первый при создании 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)
        }
  }
}
...