2016-04-29 101 views
0

我有一個帶有兩個片段的選項卡。這兩個碎片從網絡下載數據並顯示它們。保留數據在片段的標籤

典型的用例是:用戶打開應用程序,Fragment_A下載並顯示數據。如果用戶單擊另一個選項卡(Tab B),則Fragment_B下載並顯示數據。 如果用戶返回到Fragment_A數據已經存在並顯示,但如果他再次選擇轉到下一個選項卡(Fragment_B),則必須再次下載數據。

那麼當用戶導航到前一個選項卡(選項卡A)時,如何將數據保存到Fragment_B?這是我能用onSaveInstanceState()做什麼嗎?

此外,爲什麼Fragment_A保留數據而不是Fragment_B?代碼是相同的唯一的變化是正在顯示的數據。

+1

您可以在活動上下載數據和您的片段以獲取數據 – TUSHAR

+0

通過下載連接該活動的你是否將它保存在我的活動中? – Mes

+1

是的我的意思是保存數據在活動&數據我的意思是保存響應來自服務器 – TUSHAR

回答

4

您可以:

  1. 主機從片段在容器中的活動和訪問的數據

  2. 使用一個單獨的對象/一些類託管應用程序類

但請記住,無論何時您的進程死亡,您都將丟失數據。如果你希望數據在多個進程中產生,你需要將它存儲到sqllite /某種持久化中。

+0

我會嘗試在容器活動中託管數據並查看會發生什麼。感謝您的回答 – Mes

0

是的,您可以將數據存儲在onSavedInstanceState()中,但不建議使用它,因爲Activity有其自己的生命週期方法,而onSaveInstanceState()不是它的一部分。

所以它不保證總是被稱爲。

對於存儲有像

  • SharedPreferences
  • SQLite數據庫等選項