使用compat lib v1(由於某些錯誤,不使用v2 | 3);變體this question。在方向更改時保存UI - 如果保留片段,onSaveInstanceState不能按預期工作
我有一個片段,其UI具有各種控件,其狀態我想保持方向更改。
家長的活動正在銷燬方向的變化(請不要告訴我有關清單的變化,以避免活動娛樂!!!!)。
該片段調用setRetainInstance(true)
。
1)現在我的理解是,具有唯一ID的視圖應該保留一些說方向改變的狀態。鑑於此,我期望一個非null包到onCreateView|onActivityCreated
但它是空的。
2)在任何情況下,如果我保存onSaveInstanceState
狀態(確保我稱之爲超)我仍然得到一個空包在「onCreateView | onActivityCreated`
3)如果我不叫setRetainInstance(true)
然後我得到即使我沒有'onSaveInstanceState'方法,也可以使用onCreateView|onActivityCreated
中的非null包。
我的問題是,這是否按預期工作,我對生命週期的理解被打破了?無論如何,我猜測對我而言,最好的辦法是保留片段,然後將片段中的控件狀態保持在自己的狀態。
在此先感謝。彼得。
你是否設法解決這個問題?我有完全相同的問題。 – blindstuff
@blindstuff不,還沒有計算出它是一個錯誤還是一個功能,因爲我打電話給'setRetainInstance(true)'。鑑於我確實得到一個非null包,如果說應用程序在低內存條件下被破壞,那麼可能是一個功能。我基本上是通過在'onDestroyView'中保存控件的狀態並在bundle爲空時使用它們來恢復'onCreateView'中的控件。我也同樣確保我在'onSaveInstanceState'中保存狀態。 – PJL
謝謝,我很害怕這個,我試圖在旋轉過程中保留一個AsyncTask,所以我不能採取你一直遵循的思路。我也會發佈一個問題,以試圖在這個問題上得到更多的關注。 – blindstuff