0

IDを持っている場合View、を呼び出すと自動的に保存されsuper.onSaveInstanceState(outState);ます。

Fragment追加されたsのActivity場合、再作成時に再作成される場合Activity(画面の回転など)と、再作成されない場合はどのようになりますか?何を決定しますか?ルールは何ですか?

これまでに、以下のケースを試しました。しかし、トライアルアンドエラーはルールや解決策を意味するものではありません。

Fragmentが再保存される場合:

  1. 通常の場合:FragmentTransaction.add()IDのあるレイアウトに。
  2. UIのない​​フラグメント:FragmentTransaction.add()タグのみ

Fragmentが復元されない場合:

  1. super.onSaveInstanceState(outState);スキップされたとき。
  2. Fragment一致するIDなしでUIに復元されました。

一般的なルールは何ですか?ドキュメントで見逃したことはありますか?

前もって感謝します。


編集:

私の理解と実験では、動的に(プログラム的に)追加されたすべてのsは、呼び出しFragment時に保存されます。Activitysuper.onSaveInstanceState(outState)

  • 動的に(プログラムで)追加されたすべてFragmentのsには、
    • Fragmentsタグのみ(UIなし)、
    • Fragmentに接続されているView(UIを使用)、
    • およびFragmentsはUIとタグの両方を備えています。
    • (他にタイプはありますか?)

FragmentUIを使用して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に戻ると、正しく復元されます。


私はまだいくつかの信頼できる参考文献とあなたの意見を楽しみにしています!

4

1 に答える 1