Fragment の内部状態について本当に混乱しています。別のフラグメントが表示される必要がある場合、一度に 1 つのフラグメントのみを保持するアクティビティがあり、それを置き換えます。アクティビティが呼び出されている場合にのみ、ドキュメントからonSaveInstanceState呼び出されます(私の場合は呼び出されません)。onSaveInstanceState
Fragment を停止すると、その状態を自分で Singleton 内に格納します (そうです、Singleton も嫌いなのはわかっていますが、そうすることは私の考えではありませんでした)。したがって、全体を再作成し、ViewHirarchy(キーワードを使用してnew) 新しいビューを作成し、その状態を復元して に戻す必要がありonCreateViewます。また、このビュー内にチェックボックスがあり、その状態を明示的に保存したくありません。
ただし、FragmentManager「インテリジェント」になりたいと思っておりonViewStateRestored、自分で作成したことのないバンドルを呼び出し、古い状態を「復元」CheckBoxして新しいチェックボックスに適用します。これは非常に多くの質問を投げかけます:
からバンドルを制御できますonViewStateRestoredか?
FragmentManager は (おそらくガベージ コレクションされた) CheckBox の状態をどのように取得し、それを新しいものに適用しますか?
チェックボックスの状態のみを保存するのはなぜですか (TextView の状態ではありませんか??)
要約すると、どのように機能しonViewStateRestoredますか?
注 Fragmentv4 を使用しているため、17 を超える API は必要ありません。onViewStateRestored