Comparta ViewModel entre fragmentos que se encuentran en Actividad diferente
Tengo un ViewModel llamado 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;
}
}
Lo implemento basado en el ejemplo SharedViewModel en la página de referencia Arch ViewModel de Google:
Es muy común que dos o más fragmentos de una actividad necesiten comunicarse entre sí. Esto nunca es trivial ya que ambos fragmentos necesitan definir alguna descripción de la interfaz y la actividad del propietario debe unir los dos. Además, ambos fragmentos deben manejar el caso donde el otro fragmento aún no se ha creado o no es visible.
Tengo dos fragmentos, llamadosListFragment
yDetailFragment
.
Hasta ahora usé estos dos fragmentos dentro de un llamadoMasterActivity
. Y todo funcionó bien.
Tengo el ViewModel enListFragment
, seleccionó el valor para usarloDetailFragment
.
mStepSelectorViewModel = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
Sin embargo, ahora necesito eso en ciertos casos queListFragment
(un diseño para una configuración de dispositivo diferente) se agregará a una actividad diferente, llamadaDetailActivity
. ¿Hay alguna manera de hacer eso de manera similar al ejemplo anterior?