Хранить статус кнопки

Столкнулся со следующей задачей: есть приложение с многочисленными фрагментами. В одном из фрагментов есть кнопка - "Начать", которую после нажатия я скрываю (gone) и делаю видимой кнопку "Закончить". При выходе из этого фрагмента и новом переходе в него - кнопки видимы "по-умолчанию", то есть не так, как должны быть. Как можно сохранять статус, или флаг кнопок, чтобы при нажатии на кнопку "Начать" - куда-то записывалось, что процесс начался, и при заходе на форму, если этот статус актив - скрывалась кнопка?


Ответы (1 шт):

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

Сохранить статус можно разными методами: создать статическую переменную, сохранить в настройки, записать в базу или еще куда.

Что бы следить за неким фоновым процессом можно использовать LiveData, например

public class LoadingLiveData extends MutableLiveData<Boolean> {
    private static LoadingLiveData sInstance;

    public LoadingLiveData() {
        setValue(false);
    }

    public static LoadingLiveData getInstance() {
        if (sInstance == null) {
            sInstance = new LoadingLiveData();
        }
        return sInstance;
    }
}

Так например при старте процесса загрузки я передаю в LoadingLiveData true

LoadingLiveData.getInstance().postValue(true);

А при окончании false. А что бы узнать идет ли процесс

boolean isLoading = LoadingLiveData.getInstance().getValue()

Можно еще повесить наблюдатель за LiveData который к примеру будет отображать иконку процесса

LoadingLiveData.getInstance().observe(this, isLoading -> {
        if (isLoading != null) {
            if (isLoading) mLoadingView.setVisibility(View.VISIBLE);
            else  mLoadingView.setVisibility(View.GONE);
        }
    });
→ Ссылка