Не обновляется TextView после пременения ночной темы

В проложении используется Day/Night mode. Изменение режимов происходит с помощью switch, который применяет выбраный режим и меняет надпись в TextView. Ниже приведен код активити:

class MainActivity : AppCompatActivity() {

    private var display: AppCompatTextView? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        val switcher = findViewById<SwitchCompat>(R.id.switcher)

        switcher.setOnCheckedChangeListener { buttonView, isChecked ->
            if (isChecked) {
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
            } else {
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
            }
        }

        display = findViewById(R.id.display)
    }

    override fun onConfigurationChanged(newConfig: Configuration) {
        super.onConfigurationChanged(newConfig)

        when (newConfig.uiMode and Configuration.UI_MODE_NIGHT_MASK) {
            Configuration.UI_MODE_NIGHT_NO -> {
                display?.text = getString(R.string.day_mode_on)
            }
            Configuration.UI_MODE_NIGHT_YES -> {
                display?.text = getString(R.string.night_mode_on)
            }
        }

        //recreate()
    }
}

Если расскоментировать метод recreate надпись в TextView неизменяется. В другом случае - не применяется тема.


Ответы (1 шт):

Автор решения: Alex Filonenko

Проблема решается созданием нового layout'a для активити. Также нужно добавить нужную строку в strings.xml, которая содержится в папке values-night. Данную папку нужно создать самому

→ Ссылка