…と思っていたのだが、そうはならない条件があることがわかった。
つまり、Fragmentが再生成されたにも関わらず、savedInstanceState=nullとなる場合がある。
再生成されたのにsavedInstanceState=nullになるのは、以下の2つの条件を満たした場合。
- FragmentがUIを持たない。つまり、onCreateViewでnullを返している
- onSaveInstanceState(Bundle outState)で、outStateに何もputしていない
要は、Bundleに誰も何もセットしていない場合には、再生成時のsavedInstanceStateはnullになる(空のBundleが渡されてくるわけではない)。
なお、Viewは自らの状態をBundleに保存しているので、FragmentがViewを持つ場合には通常Bundleは空にはならない。そのため、savedInstanceStateがnullかどうかによって、再生成かどうかを判断できる。
0 件のコメント:
コメントを投稿