Fragment.onDetachは、Fragmentとそれに紐づいたActivityの関係が解除された時に呼ばれる。
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は反映されてない。
そこでButton2を改めて押すと、

MainActivityのButton2でチェックしたgetActivityはnullになっている。
Sample/android/Fragment/onDetach/src/Fragment at master · bg1bgst333/Sample · GitHub