我有一个名为SharedViewModel的ViewModel:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我在Google的Arch ViewModel参考页面上基于SharedViewModel示例实现它:
活动中的两个或更多个片段需要彼此通信是很常见的.这绝不是微不足道的,因为两个片段都需要定义一些接口描述,并且所有者活动必须将两者绑定在一起.而且,两个片段必须处理尚未创建或不可见的其他片段的情况.
我有两个片段,叫做ListFragment和DetailFragment.
到现在为止我用里面称这两个片段MasterActivity.一切都运作良好.
我得到了ViewModel ListFragment,选择了要使用它的值DetailFragment.
mStepSelectorViewModel = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
Run Code Online (Sandbox Code Playgroud)
但是,现在我需要在某些情况下ListFragment(将不同设备配置的布局)添加到另一个名为的活动中DetailActivity.有没有办法像上面的例子那样做?
android viewmodel android-fragments android-activity android-architecture-lifecycle