Не обновляется 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. Данную папку нужно создать самому