Fragment.onDetach

Fragment.onDetachは、Fragmentとそれに紐づいたActivityの関係が解除された時に呼ばれる。

Fragment  |  Android Developers

removeやreplaceなど、Fragmentが破棄された時に呼ばれる。
onAttachの対となるもの。
Fragment.onDestroyViewのコードをベースに、strings.xmlで、

MainActivity側のButtonを2つにしている。
Fragment1はTextView1つ。
fragment1_main.xmlは、

TextView。
activity_main.xmlは、

Buttonが2つとFrameLayout。
Fragment1.javaは、

onDestroyView、onDestroy、onDetachでgetActivityがnullになるか見ている。
MainActivity.javaは、

Button1がFragment1を削除するのに対し、Button2ではあらかじめ保存しておいたFragment1の参照mFragmentを使ってgetActivityがnullになるかをチェックする。

起動時
起動時

起動時。
Button1でFragment1を削除すると、

こうなる
こうなる

こうなる。
この時、

onDetachでもnullになっているわけではない
onDetachでもnullになっているわけではない

onDetachでもnullになっているわけではない。
実は、onDetachは解除する直前に呼ばれるので、nullは反映されてない。
そこでButton2を改めて押すと、

MainActivityのButton2でチェックしたgetActivityはnullになっている。
MainActivityのButton2でチェックしたgetActivityはnullになっている。

MainActivityのButton2でチェックしたgetActivityはnullになっている。

Sample/android/Fragment/onDetach/src/Fragment at master · bg1bgst333/Sample · GitHub