2013-02-22 44 views
0

我有片段活動,在片段A上開始,然後可以更改爲片段B.如果我在片段B上,並旋轉我的設備。它加載原始片段A而不是片段B.我以實用的方式加載片段A和B.我認爲機器人應該救我是哪個片段自動我沒有覆蓋的onSaveInstanceState片段旋轉不恢復當前片段

我這是怎麼裝的片段

FragmentTransaction t = this.getSupportFragmentManager() 
      .beginTransaction(); 
    t.replace(R.id.fragholder, new MainFragment()); 
    t.commit(); 
+0

郵政相關的代碼 – dymmeh 2013-02-22 22:01:24

回答

0

只需添加機器人:configChanges =「方向|屏幕尺寸」你的清單和Android照顧一切爲您

+1

根據configChanges屬性上Activity類的officail文檔:「應該避免使用這個屬性,只能用作最後一個請閱讀處理運行時更改以獲取有關如何正確處理由於配置更改而重新啓動的更多信息「。引用注意到的文檔:http://developer.android.com/guide/topics/manifest/activity-element.html – 2013-02-27 00:10:43

0

當你旋轉你的設備,它會破壞你的活動,並重新創建它。所以假設Fragment A是默認的Fragment,那麼當Activity被重新創建時,它會加載它是合乎邏輯的。所以你需要重寫onSaveInstanceState來存儲哪個片段是可見的,然後在onCreate中重新加載該片段。

參考相關活動的生命週期DOC:http://developer.android.com/training/basics/activity-lifecycle/recreating.html

+0

好是有去存儲對實際片段的引用?從我可以看到我只能保存原始數據類型。在這種情況下,setRetainInstance(true)會幫助我。雖然我不完全確定如何使用這種方法 – user1634451 2013-02-22 22:36:04

+0

我會做的只是定義常量或與片段相對應的枚舉,然後只存儲這些片段。 – 2013-02-22 22:37:16

+0

所以要回答,不,你不能存儲碎片本身,只是一個映射到片段的原始類型。 – 2013-02-22 22:49:13