Проблема с 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()

→ Ссылка