2011-09-21 48 views
2

由於對碎片行爲感到沮喪,我開始進行一些測試。在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中的片段時,片段是否工作正常。

解決此問題的一種方法是始終動態創建我的碎片。有沒有人找到不同的解決方法?

+0

您是否找到解決方案?我有一個非常類似的問題。 – blindstuff

+0

ACL的最新版本修復了大部分問題。 –

回答

0

修訂版4的ACL修復了這些問題。

+1

我使用''android.support.v4.app.Fragment''和XML定義的碎片的bug仍然存在:( – caligari

+0

僅供參考,這裏可能的解決方案:http://stackoverflow.com/a/20685549/470091 – caligari