回答
正確的方式我假設你正在使用視圖模型在整個活動和片段娛樂活動保持狀態。你意識到viewModel本質上就是你的模型類,對嗎?那你爲什麼要在viewModels之間發送消息呢?
如果你有改變片段的狀態的外部事件,你應該把它傳播到你的活動,誰就會發送這些消息給你的片段,您可以更新您的視圖模型的狀態。
好的,例如在onActivityResult中,我需要更新整個活動並設置其中一個片段上的文本。 所以我必須做好老findFragment在onActivityResult而不是模型到模型的溝通? –
你應該在你的活動使用一個視圖模型爲您的活動。然後,您可以從您的活動和其他片段觀察這個視圖模型。
例如,下面ViewModel類可以包裝您的活動
public class SharedViewModel extends ViewModel {
private final MutableLiveData<Item> selected = new MutableLiveData<Item>();
public void select(Item item) {
selected.setValue(item);
}
public LiveData<Item> getSelected() {
return selected;
}
}
然後你可以訂閱不同的片段更改活動象下面這樣:
public class DetailFragment extends LifecycleFragment {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedViewModel model = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
model.getSelected().observe(this, { item ->
// update UI
});
}
}
訂閱後,您現在可以做改變你的事件數據,通知觀察片段或活動:
public class MasterFragment extends Fragment {
private SharedViewModel model;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
model = ViewModelProviders.of(getActivity()).get(SharedViewModel.class);
itemSelector.setOnClickListener(item -> {
model.select(item);
});
}
}
看看sharing data between fragments。有關android體系結構組件的Google文檔是有限但很好的。
其實這是很糟糕的解決方案,儘可能SharedViewModel成爲存儲的一切,完全不可支持的一個神的對象。接下來的開發人員會因此而討厭你 –
- 1. 如何獲得其他活動中片段活動的功能
- 2. android,如何通過其他片段操縱一個片段的視圖?
- 3. 如何在視圖模型傳遞價值,其他視圖模型與mvvmcross UWP
- 4. 如何從其他片段
- 5. 從某個視圖保存其他模型的字段
- 6. 如何獲得視圖的父代片段的實例:
- 7. 視圖模型是針對片段
- 8. 如何獲得ForeignKey的模型字段
- 9. 如何在其他頁面上獲得buddyboss圖片
- 10. 如何獲得其他視圖控制器中的nsuserdefault值
- 11. 在其他任何東西上獲得動畫片段
- 12. Wpf主視圖有很多其他視圖模型依賴關係的模型
- 13. 在Android上的其他片段發生更改後刷新片段的視圖
- 14. 棱鏡6獲取ShellViewModel上下文內其他視圖模型
- 15. 自定義視圖片段重疊三星設備上的其他片段
- 16. 去一個片段的其他片段
- 17. UIView模糊其他視圖
- 18. 如何組織視圖,局部視圖及其視圖模型?
- 19. 視圖如何瞭解其模型?
- 20. 刷新其他片段的列表視圖
- 21. 如何從其他片段類
- 22. 片段重疊其他片段
- 23. 如何在其他課程資源中設置圖片視圖?
- 24. 從其他片段更新列表視圖
- 25. 得到從視圖模型
- 26. 更新模型字段和django中的任何其他字段
- 27. 如何根據其他表格計算模型中的字段?
- 28. 如何獲得entityobject的數據註解視圖模型對象,而在視圖模型
- 29. 如何從計算函數內部更新其他字段或其他模型?
- 30. 如何獲取視圖外部的視圖模型
我一直在玩這個了一會兒?任何更新? –