對於有ID的View
,調用super.onSaveInstanceState(outState);
時會自動保存。如何確定活動重新創建時的片段恢復?
對於Fragment
將其添加到Activity
,它將在重新創建Activity
(例如屏幕旋轉)時重新創建的情況是什麼,以及它不會有什麼情況?要確定什麼?什麼是規則?
到目前爲止,我已經嘗試過以下情況。但是,試錯誤並不意味着任何規則或解決方案。
例時Fragment
s的重新存儲:
- 正常情況下:
FragmentTransaction.add()
到帶有ID的佈局。 - 片段沒有UI:
FragmentTransaction.add()
標籤的只
例時Fragment
s爲NOT重新存儲:
- 當
super.onSaveInstanceState(outState);
被跳過。 - 在沒有匹配ID的UI中恢復
Fragment
。
什麼是一般規則?我在文檔中錯過了什麼?
在此先感謝。
編輯:
據我瞭解,和實驗,所有動態(編程)添加Fragment
s的在他們Activity
調用super.onSaveInstanceState(outState)
保存。
- 所有動態(編程)加入
Fragment
小號包括Fragment
s的僅一個標籤(無UI),附Fragment
s到一個View
(與UI),- 和
Fragment
s與均爲一個UI和一個標籤。 - (是否有任何其他類型?)
關於恢復與UI一個Fragment
到與沒有匹配的ID,確實重新創建Fragment
的佈局。它只是不能在視覺上在佈局所示,用下面的警告消息:
04-08 11:41:22.445: W/PhoneWindow(9853): Previously focused view reported id 2131165226 during save, but can't be found during restore.
一旦我們回到與其匹配的ID的用戶界面中,它將被正確地恢復。
隨着[源代碼](https://android.googlesource.com/platform/frameworks/support/+/master/v4/java/android/support/v4/app),所有的問題都可以解決: ) – midnite 2013-06-06 02:01:37