Как сохранить настройки темы, используя общие настройки в Котлине ⇐ Android
-
Гость
Как сохранить настройки темы, используя общие настройки в Котлине
Итак, я пытаюсь изменить тему приложения с помощью переключателя и сохранить настройки темы с помощьюsharedPrefrence, хотя мне каким-то образом удается заставить это работать, но есть некоторые проблемы.
`переопределить fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView (R.layout.activity_main) // инициализация переключателя и переменнойsharedPref val themeSwitch = findViewById(R.id.theme_switch) valsharedpref = getSharedPreferences("theme_pref",MODE_PRIVATE) редактор val =sharedpref.edit() themeSwitch.isChecked =sharedpref.getBoolean("theme_switch_is_checked",true) //проверяем, включен переключатель или нет весело loadTheme(){ val isChecked = themeSwitch.isChecked если (проверено) { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) редактор.применить() }еще{ AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) редактор.применить() } } загрузитьТема() //если используется тема, измените ее и вызовите функцию loadTheme() themeSwitch.setOnClickListener { если (themeSwitch.isChecked) { editor.putBoolean("theme_switch_is_checked",true) загрузитьТема() } еще { editor.putBoolean("theme_switch_is_checked",false) загрузитьТема() } редактор.применить() }` Этот код работает, но проблема, с которой я столкнулся, заключается в том, что всякий раз, когда я меняю тему, значения в моем текстовом представлении стираются, и кажется, что весь макет обновляется.
Итак, я пытаюсь изменить тему приложения с помощью переключателя и сохранить настройки темы с помощьюsharedPrefrence, хотя мне каким-то образом удается заставить это работать, но есть некоторые проблемы.
`переопределить fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView (R.layout.activity_main) // инициализация переключателя и переменнойsharedPref val themeSwitch = findViewById(R.id.theme_switch) valsharedpref = getSharedPreferences("theme_pref",MODE_PRIVATE) редактор val =sharedpref.edit() themeSwitch.isChecked =sharedpref.getBoolean("theme_switch_is_checked",true) //проверяем, включен переключатель или нет весело loadTheme(){ val isChecked = themeSwitch.isChecked если (проверено) { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES) редактор.применить() }еще{ AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) редактор.применить() } } загрузитьТема() //если используется тема, измените ее и вызовите функцию loadTheme() themeSwitch.setOnClickListener { если (themeSwitch.isChecked) { editor.putBoolean("theme_switch_is_checked",true) загрузитьТема() } еще { editor.putBoolean("theme_switch_is_checked",false) загрузитьТема() } редактор.применить() }` Этот код работает, но проблема, с которой я столкнулся, заключается в том, что всякий раз, когда я меняю тему, значения в моем текстовом представлении стираются, и кажется, что весь макет обновляется.
Мобильная версия