簡體   English   中英

重新創建活動后在Android中還原實例變量

[英]Restoring instance variables in Android upon activity recreation

我有一個要為其創建自定義標簽視圖的Android項目。 我已經以這樣一種方式來構造主ActivityFragmentActivity ),即它在屏幕底部具有一個標簽欄,其上方是一個FrameLayout 選項卡上的每個選項都會創建一個新的Fragment (與該選項有關)。 現在,為防止每次單擊選項時重新產生片段,我將片段存儲在活動的實例變量中。 因此,當單擊選項卡選項時,我檢查其片段是否已創建,如果尚未創建,則將其創建並添加到FrameLayout (並隱藏所有現有片段),否則,我將隱藏現有片段(存儲在名為currentlyViewedFragment的實例變量中,並顯示與clicked選項匹配的已創建片段。

同樣,在調用活動的onCreate()時,我將初始選項卡設置為主頁選項卡(選項卡之一)。 這很好用,除非重新創建活動(由於方向更改)。 在這里,我認為實例變量(實際上是指向已創建片段的指針)失去了它們的值,並設置為null。 這將導致主頁選項卡被創建並覆蓋在還原的視圖上。 我也知道您可以使用傳遞給onSaveInstanceState的捆綁包保存狀態,並使用onRestoreInstanceState還原它。 但是捆綁軟件需要包含可序列化的數據。 但是,這些實例變量僅僅是指針! 如何恢復其價值?

注意:此問題已在下面由我發表的評論中解決。

謝謝。

您問題的答案是使用捆綁包進行狀態還原。 在可以放置變量並且可序列化的位置創建一個類,以便可以將其對象放置到包中。 或者,您也可以使用SharedPreferences將實例變量的值存儲在手機存儲中。 希望您能從我的怪異答案中得到靈感。

暫無
暫無

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

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