2

我試圖在Android中使用新的體系結構組件,到目前爲止它工作得很好。但是,我偶然發現了一個架構問題。Android體系結構組件ViewModel上下文問題

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

  • 片段C讓用戶選擇一定的價值,並將其寫入到​​。
  • 片段A使用片段C讓用戶選擇值,然後A直接從​​中讀取值並在其UI中顯示它。
  • 片段B使用與片段A相同的方法。

的問題是,由於​​總是在MainActivity的背景下,如果片段A已經B之前被使用,該值將仍然可用,B會顯示一些舊數據。

我看到的最明顯的解決方案是分別在片段AB的上下文中創建​​。但後來我不知道如何讓片段C訪問那些​​s。

我還可以創建在片段C的背景下​​,但這需要片段AB創造C一個實例,我不認爲這是一個很好的解決方案。

第三種解決方案是保持當前的方法並在適當的時候清除​​中的數據,但這也是一團糟。

最好的方法是什麼?

回答

0

您可以在VM中映射並將AB的值存儲在不同的密鑰下。

因此,當A開始C它通過其A_key作爲參數。當用戶在C中選擇一個值時,它將以A_key作爲關鍵字存儲在虛擬機映射中。當A檢查值是否可用時,它只檢查爲A_key存儲的值。

對於BB_key也是如此。

+0

這樣一個簡單的解決方案 - 謝謝! –