У меня есть ViewModel с именем 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;
}
}
Я реализую его на основе примера SharedViewModel на странице справки Google Arch ViewModel:
Очень часто бывает, что два или более фрагмента в действии должны взаимодействовать друг с другом. Это никогда не бывает тривиальным, так как оба фрагмента должны определять описание интерфейса, а активность владельца должна связывать их вместе. Более того, оба фрагмента должны обрабатывать случай, когда другой фрагмент еще не создан или невидим.
У меня есть два фрагмента, называемые ListFragment
и DetailFragment
.
До сих пор я использовал эти два фрагмента внутри вызываемого MasterActivity
. И все сработало хорошо.
Я получил ViewModel в ListFragment
, выбрал значение для использования в DetailFragment
.
mStepSelectorViewModel = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
Однако теперь мне это нужно. В некоторых случаях, когда ListFragment
(макет для другой конфигурации устройства) добавляется к другому действию, называемому DetailActivity
. Есть ли способ сделать это аналогично приведенному выше примеру?