Сохранение темы в 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 шт):

Автор решения: Andrew

Если у вас будет только два варианта темная и светлая то можно записывать в память 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. Вот доки по этой теме и пример

→ Ссылка