由於對碎片行爲感到沮喪,我開始進行一些測試。在xml佈局中聲明的碎片中的錯誤(ACL v4)
我有一個活動和2個片段。片段A在活動的xml佈局中聲明,片段B在活動的onCreate()
方法中的活動佈局中添加(僅當它不存在時)。我在活動和2個片段的所有主生命週期方法中添加了日誌記錄,並在來回切換方向時測試了行爲。這裏是我的發現:
片段B(動態添加片段)的行爲與預期:
一)改變方向時之後,savedInstanceState
包包含之前已經保存在onSaveInstanceState()
B)如果setRetainInstance(true)
,在方向更改期間,onDestroy()
未被調用,並且後續的onCreate()
未被調用。該片段的字段的取向變化
片段A(在XML佈局所限定的片段)期間保留不表現爲預期:
a)一種取向變化之後,savedInstanceState束總是空雖然onSaveInstanceState()
已經正確地稱爲
b)如setRetainInstance(true)
,方位的變化過程中,onDestroy()
是不能不稱爲預期相反的是預期,正在重新連接片段時onCreate()
也被稱爲。此外,片段的字段不會保留。總結一下,對於在xml佈局中聲明並使用ACL v4的片段,在方向更改期間保存狀態不起作用,並且setRetainInstance(true)不起作用。
我的問題是,如果有人在Android 3.0+上測試了此功能,並且可以說使用Android SDK中的片段時,片段是否工作正常。
解決此問題的一種方法是始終動態創建我的碎片。有沒有人找到不同的解決方法?
您是否找到解決方案?我有一個非常類似的問題。 – blindstuff
ACL的最新版本修復了大部分問題。 –