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
? ? }
});
這只是它如何工作的一個小例子。架構組件非常強大,所以我強烈建議您閱讀它。
添加回答
舉報