Для архитектуры MVVM это выглядит так: вы создаете модель с вашими данными, вы получаете к ней доступ и изменяете ее в модели представления (в случаях LiveData).И наблюдайте это в представлениях (действиях / фрагментах).
MainViewModel extends ViewModel{
MutableLiveData<String> someStringObject = new MutableLiveData<>;
private void someMethod{
someStringObject.setValue("For main thread");
someStringObject.postValue("For back thread");
}
public MutableLiveData<String> getSomeStringObject(){
return someStringObject;
}
}
FragmentA extends Fragment{
@BindView(R.id.tv) //ButterKnife
TextView someTV;
private MainViewModel mainViewModel;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
//getting viewModel
mainViewModel = ViewModelProviders.of(getActivity()).get(MainViewModel.class);
//registering observer
mainViewModel.getSomeStringObject.observe(this, value ->{
someTV.setText(value);
});
}
}
Таким образом, вы можете реагировать на изменения ViewModel в вашем View.Теперь, если getSomeStringObject изменен в mainViewModel, он автоматически изменится во FragmentA.