2

フラグメントがほとんどないアクティビティがあります。

フラグメントはすべてインスタンス プロパティを保持するために false に設定されます。これは、画面の向きが変更されたときにフラグメントが破棄されることを意味します。(さらに、それらはバックスタックにはありません)

画面の向きを変更すると、フラグメントが破棄されて再作成されることがわかりましたが、これは予想どおりです。

私が期待していないのは、アクティビティの再作成中にアクティビティによってこれらのフラグメントを再接続することです。アクティビティの onCreate メソッド内に null チェックがあり、フラグメントが存在するかどうかを判断し、この決定に従って追加または添付されます。

ここで、すべてのフラグメントが削除/破棄された場合、アクティビティの onCreate でどのようにフラグメントがアタッチされるか。破壊されたので追加すべきではありませんか?

Activity の onCreate の super.onCreate(savedInstanceState) がここで再度フラグメントをロードしていると思われます。

何か案は?

4

1 に答える 1

0

これは次の複製のようです: 向きの変更に対する Android Fragment のライフサイクル

上記の簡単な回答: 「構成の変更が発生しても、古いフラグメントは破棄されません。再作成されたときにアクティビティに追加されます。これは、ほとんどの場合、後部に大きな苦痛をもたらします。」

「一貫したユーザー エクスペリエンスを確保するために、Android は、構成の変更によりアクティビティが再起動されたときに、フラグメント レイアウトと関連するバック スタックを保持します。」(レト・マイヤー本 p.124)

メソッドで super.onSaveInstanceState() を呼び出さないでください。これにより、アクティビティのライフサイクルが中断され、このすでに非常に面倒なプロセスにさらに潜在的な問題が発生する可能性があります。FragmentActivity のソース コードを調べます。すべてのフラグメントの状態がそこに保存されています。— ブライアン

于 2014-06-14T00:20:33.440 に答える