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