FragmentManager.putFragment

FragmentManager.putFragmentで、Fragmentの参照を一応保存できる。

FragmentManager  |  Android Developers

strings.xmlで、

Activity用の"Button1"と、Fragment用の"FButton1"と、TextViewの"Fragment1"。
fragment1_main.xmlは、

TextViewとButton。
activity_main.xmlは、

ButtonとFrameLayout。
Fragment1.javaは、

インスタンスを保持出来てるかは、mNumberでチェックできる。
onCreateViewでTextViewにmNumberをセット。
Buttonを押すと、mNumberが増えてまたセット。
MainActivity.javaは、

MainActivity側のButtonでFragment1をadd。
onSaveInstanceStateの時に、putFragmentで保存、onRestoreInstanceStateの時に、getFragmentで復元。
回転すれば、ここに来るので、その時のIDとか、mNumberがどうなるか見てる。

起動時
起動時

起動時。
Button1を押すと、

Fragment1がadd
Fragment1がadd

Fragment1がadd。
FButton1を押すと、

0から1に増えている。押すたびに増える。
0から1に増えている。押すたびに増える。

0から1に増えている。押すたびに増える。
回転すると、

0に戻ってしまう
0に戻ってしまう

0に戻ってしまう。

ログを見るとわかるが、IDは同じなのに、インスタンスは別。
ログを見るとわかるが、IDは同じなのに、インスタンスは別。

ログを見るとわかるが、IDは同じなのに、インスタンスは別。
実際のところ、インスタンスが永続化されるわけではなく、同じIDで再生成しているだけみたいなので、オブジェクトもビューも同じ状態を維持できてるわけではない。
("一応"保存と言ってるのはそういうこと・・・。)

Sample/android/FragmentManager/putFragment/src/FragmentManager at master · bg1bgst333/Sample · GitHub