簡體   English   中英

Android架構組件ViewModel上下文問題

[英]Android Architecture Components ViewModel context issue

我試圖在Android中使用新的架構組件,到目前為止它已經運行得很好。 但是,我偶然發現了一個架構問題。

我有一個MainActivity ,它包含一堆片段, ABC 到目前為止,每次我需要我的ViewModel(VM)時,我都會在MainActivity的上下文中獲取它(如下所示: MyViewModel vm = ViewModelProviders.of(getActivity()).get(MyViewModel.class); )。 現在考慮一下:

  • Fragment C允許用戶選擇一些值,並將其寫入VM
  • 片段A使用片段C讓用戶選擇值,然后A直接從VM讀取值並在其UI中顯示它。
  • 片段B使用與片段A相同的方法。

問題是,由於VM始終位於MainActivity的上下文中,如果在B之前使用了片段A ,則該值仍然可用,並且B將顯示一些舊數據。

我看到的最明顯的解決方案是分別在片段AB的上下文中創建VM 但后來我無法弄清楚如何讓片段C訪問那些VM

我也可以在片段C的上下文中創建VM ,但這需要片段AB來創建C的實例,我認為這不是一個很好的解決方案。

第三種解決方案是保持當前的方法,並在適當時清除VM的數據,但我認為這也很麻煩。

最好的方法是什么?

您可以在VM中使用映射,並將AB的值存儲在不同的鍵下。

因此,當A開始C它將其A_key作為參數傳遞。 當用戶在C選擇一個值時,它將使用A_key作為鍵存儲在VM的映射中。 A檢查值是否可用時,它僅檢查為A_key存儲的值。

BB_key

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM