Я реализовал темную тему, используя темы материалов DayNight в своем приложении. Я следил за несколькими статьями и выступлениями на конференциях по inte rnet. Все шло хорошо, пока не начали происходить какие-то мелочи. Позвольте мне объяснить:
В приложении есть несколько функций. Чтобы явно не тематизировать каждое действие, я последовал совету поместить начальную настройку темы в метод onCreate () моего приложения. Однако у этого есть один недостаток, который я объясню позже.
1.) AppCompat реализует ночной режим на уровне активности, что означает, что он не будет обновлять контекст приложения (который я использую для установки темы в масштабе приложения) (источник: https://issuetracker.google.com/issues/134379747)
2.) Рекомендуется использовать фрагмент кода , следующий за , чтобы проверить, работает ли приложение в каком режиме . Но в моем случае он возвращает прямо противоположный режим:
val currentNightMode = configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
when (currentNightMode) {
Configuration.UI_MODE_NIGHT_NO -> {} // Night mode is not active, we're using the light theme
Configuration.UI_MODE_NIGHT_YES -> {} // Night mode is active, we're using dark theme
}
3.) Когда я настраиваю мое приложение на отслеживание системы, а затем я вручную переключаюсь в световой режим (в приложении), а затем возвращаюсь, чтобы следовать системе , мое приложение остается светлым, даже если мой телефон находится в общесистемной темной теме. Однако он меняется при переключении темы моего приложения.
Что я делаю не так? Возможным решением может быть установка темы на уровне активности?