Сохранение темы в SharedPreferences
Немного не понимаю как сохранить тему в SharedPreferences, для того, что бы тема сохранялась после перезапуска приложения. Фрагмент кода:
void initThemeListener() {
lightThemeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "light", Toast.LENGTH_SHORT).show();
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
}
});
darkThemeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "dark", Toast.LENGTH_SHORT).show();
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
}
});
}
Ответы (1 шт):
Если у вас будет только два варианта темная и светлая то можно записывать в память bool значение, например что light == true. Для этого объявляем в классе где вы это делаете (активность или фрагмент) переменную:
SharedPreferences sPref;
в методе onCreate() если это активность присваиваем ей значение:
public void onCreate(Bundle savedInstanceState) {
...
sPref = getSharedPreferences("app_data", 0);
...
}
дальше при установке светлой темы пишем в память:
sPref.edit().putBoolean("theme", true).commit();
после записи считываем где вам нужно:
sPref.getBoolean("theme", false);
и дальше через условие устанавливаем тему:
if (sPref.getBoolean("theme", false)){
// light == true
}else{
// light == false
}
если же у вас будет больше чем 2 темы то нужно добавлять какие-то идентификаторы и писать уже например int. Вот доки по этой теме и пример