Я вызываю методы в viewModel для установки данных в моих изменяемых живых данных, как показано ниже, и они вызываются один за другим точно так же, как показано ниже:
viewModel.onCountrySelected(country);
viewModel.onLanguageSelected(language);
Затем в модели представления я устанавливаю данные для изменяемых живых данных, которые я наблюдаю в своем фрагменте. Методы в моей модели представления ниже:
public void onLanguageSelected(int type) {
clickType.setValue(type);
}
public void onCountrySelected(int type) {
clickType.setValue(type);
}
clickType - это мои изменяемые данные в реальном времени. Теперь проблема в том, что мой onChanged вызывается только один раз, и это тоже только для последнего значения, которое я установил для clickType.
Если я не ошибаюсь, функция onChanged должна запускаться дважды, поскольку я дважды устанавливаю значение для clickType.
private void initLiveData()
{
clickType = new MutableLiveData<>();
clickType.setValue(0);
}
В initLiveData я инициализирую MutableLiveData. Также я вызываю initLiveData после установки переменной veiwModel в макет.
Во фрагменте:
binding.setViewModel(viewModel);
viewModel.initLiveData()
viewModel.getClickType().observe(this, new Observer<Integer>() {
@Override
public void onChanged(@Nullable Integer type) {
handleClicks(type);
}
});