IDを持っている場合View
、を呼び出すと自動的に保存されsuper.onSaveInstanceState(outState);
ます。
にFragment
追加されたsのActivity
場合、再作成時に再作成される場合Activity
(画面の回転など)と、再作成されない場合はどのようになりますか?何を決定しますか?ルールは何ですか?
これまでに、以下のケースを試しました。しかし、トライアルアンドエラーはルールや解決策を意味するものではありません。
Fragment
が再保存される場合:
- 通常の場合:
FragmentTransaction.add()
IDのあるレイアウトに。 - UIのないフラグメント:
FragmentTransaction.add()
タグのみ
Fragment
が復元されない場合:
super.onSaveInstanceState(outState);
スキップされたとき。Fragment
一致するIDなしでUIに復元されました。
一般的なルールは何ですか?ドキュメントで見逃したことはありますか?
前もって感謝します。
編集:
私の理解と実験では、動的に(プログラム的に)追加されたすべてのsは、呼び出しFragment
時に保存されます。Activity
super.onSaveInstanceState(outState)
- 動的に(プログラムで)追加されたすべて
Fragment
のsには、Fragment
sタグのみ(UIなし)、Fragment
に接続されているView
(UIを使用)、- および
Fragment
sはUIとタグの両方を備えています。 - (他にタイプはありますか?)
Fragment
UIを使用して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を持つUIに戻ると、正しく復元されます。