読者です 読者をやめる 読者になる 読者になる

FragmentTransaction.replace

前回でも使ったが、FragmentTransaction.replaceで指定したFragmentに置き換えることができる・・・。

FragmentTransaction | Android Developers

replaceは置き換えるということである・・・。
置き換えるということは、以前のフラグメントは破棄されるということである・・・。

今回は、第3引数に"tag1"というタグをつけている・・・。

こっちは"tag2"・・・。

こっちは"tag3"・・・。
これらのタグは今回は使わないが、このタグでフラグメントを探すときは便利だ・・・。

メンバフィールドにcountを用意・・・。
このオブジェクトが作られてから、onStartが呼ばれた回数を持つ・・・。
そしてonCreateも追加・・・。ここでいったんgetActivityでmainActivityを取得して、Toastで"onCreate()"を表示・・・。

onStartを定義して、Toastで"onStart()"を表示したら、countを増やして、countの値も表示・・・。

onDestroyで"onDestroy()"を表示するようにもする・・・。

今回、countはあまり関係ないが、あとで使うかもしれない・・・。

f:id:BG1:20160914120244p:plain

Menu1を押すと、

f:id:BG1:20160914120256p:plain

"onCreate()"・・・。

f:id:BG1:20160914120354p:plain

"onStart()"・・・。

f:id:BG1:20160914120414p:plain

countは1・・・。

f:id:BG1:20160914120436p:plain

Menu2を押すと、

f:id:BG1:20160914120519p:plain

"onDestroy"が呼ばれる・・・。
これは赤いfragment1が破棄された時のものである・・・。

f:id:BG1:20160914120610p:plain

"onCreate()"・・・。

f:id:BG1:20160914120648p:plain

"onStart()"・・・。

f:id:BG1:20160914120725p:plain

countは1・・・。

f:id:BG1:20160914120808p:plain

Menu3を押すと、

f:id:BG1:20160914120835p:plain

"onDestroy"・・・。
緑のfragment2が破棄された・・・。

f:id:BG1:20160914120924p:plain

"onCreate()"・・・。

f:id:BG1:20160914121003p:plain

"onStart()"・・・。

f:id:BG1:20160914121035p:plain

countは1・・・。

f:id:BG1:20160914121053p:plain

再びMenu1を押してみる・・・。

f:id:BG1:20160914121119p:plain

この"onDestroy()"は青いfragment3の破棄によるもの・・・。

f:id:BG1:20160914121246p:plain

"onCreate()"・・・。

f:id:BG1:20160914121305p:plain

"onStart()"・・・。

f:id:BG1:20160914121338p:plain

countは1・・・。

onDestroyが何度も呼ばれていることから、切り替えるたびにFragmentは破棄されているのがわかる・・・。
2度目のfragment1でも1度目を破棄しているのでcountは1のまま・・・。

Sample/android/FragmentTransaction/replace/src/FragmentTransaction at master · bg1bgst333/Sample · GitHub