1 回答
TA贡献1816条经验 获得超6个赞
您可以用于ViewModelActivity 和 Fragment 之间通信的目的。为了使其正常工作,您还可以使用LiveData观察变量更改并在发生变化时进行更新。
1)不要忘记添加相应的依赖项。
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
2) 创建一个继承自 的类ViewModel。在这个类中,我们有MutableLiveData允许 up 使用的对象LiveData。可能最好使用Integertype,这样你就可以像 id 一样更改它。
public class ExampleViewModel extends ViewModel {
private MutableLiveData<String> sortingMode = new MutableLiveData<>();
public LiveData<String> getSortingMode() {
return sortingMode;
}
public void setSortingMode(String mode) {
sortingMode.postValue(mode);
}
}
2)获取对您的内部活动的引用ViewModel,以便您可以从(我相信)您的选项菜单中使用排序模式更新值
ExampleViewModel viewModel = ViewModelProviders.of(this).get(ExampleViewModel.class);
3)要更改该值,您只需调用您的ViewModel方法,该方法将根据项目/ ID/标题(无论听起来对您更好)来更新变量值。
viewModel.setSortingMode("Example Mode");
ViewModel4)获取Fragment内的Activity
ExampleViewModel viewModel = ViewModelProviders.of(getActivity()).get(ExampleViewModel.class);
5)订阅LiveData对象观察值变化
viewModel.getSortingMode().observe(this, new Observer<String>() {
@Override
public void onChanged(String s) {
// Provide needed logic depending on sorting preferences
}
});
这只是它如何工作的一个小例子。架构组件非常强大,所以我强烈建议您阅读它。
添加回答
举报