Compartilhe o ViewModel entre fragmentos que estão em diferentes Atividades
Eu tenho um ViewModel chamado SharedViewModel:
public class SharedViewModel<T> extends ViewModel {
private final MutableLiveData<T> selected = new MutableLiveData<>();
public void select(T item) {
selected.setValue(item);
}
public LiveData<T> getSelected() {
return selected;
}
}
Eu o implemento com base no exemplo SharedViewModel na página de referência do Arch ViewModel do Google:
É muito comum que dois ou mais fragmentos de uma atividade precisem se comunicar. Isso nunca é trivial, pois os dois fragmentos precisam definir alguma descrição da interface e a atividade do proprietário deve unir os dois. Além disso, os dois fragmentos devem lidar com o caso em que o outro fragmento ainda não foi criado ou não está visível.
Eu tenho dois fragmentos, chamadosListFragment
eDetailFragment
.
Até agora eu usei esses dois fragmentos dentro de um chamadoMasterActivity
. E tudo funcionou bem.
Eu tenho o ViewModel emListFragment
, selecionou o valor para usá-loDetailFragment
.
mStepSelectorViewModel = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
No entanto, agora eu preciso disso. Em certos casos,ListFragment
(um layout para uma configuração de dispositivo diferente) seja adicionado a uma atividade diferente, chamadaDetailActivity
. Existe uma maneira de fazer isso da mesma forma que o exemplo acima?