Проблема с boolean кнопкой переключающей тему приложения
Делаю переключение ночного режима и возникла проблема с тем, чтобы переключить тему со светлой на темную, приходится нажимать два раза на кнопку вместо одного. Из-за чего это происходит и как это можно исправить?
boolean prover = true;
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch(id){
case R.id.action_settings :
one();
return true;
}
return super.onOptionsItemSelected(item);
}
public void one(){
if (prover){
getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES);
prover = false;
return;
}
getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO);
prover = true;
}
Ответы (1 шт):
Автор решения: Sergei Buvaka
→ Ссылка
Ну я не вижу всего кода, но смею предположить.
Вы не сохраняете ваш флаг в savedInatanceState, а это значит, что при смене темы значение вашего флага сбрасывается.
Почему так происходит? Потому что при любой смене конфигурации активити пересоздается и все переменные в ней создаются по новой. Смена темы - это смена конфигурации.
В методе активити onSavedInatanceState() вы можете положить ваш флаг в бандл и достать в onCreate()