使用add()加入fragment時將觸發onAttach(),使用attach()不會觸發onAttach()
使用replace()替換後會將之前的fragment的view從viewtree中刪除
觸發順序:
detach()->onPause()->onStop()->onDestroyView()
attach()->onCreateView()->onActivityCreated()->onStart()->onResume()
使用hide()方法只是隱藏了fragment的view並沒有將view從viewtree中刪除,隨後可用show()方法將view設置爲顯示
而使用detach()會將view從viewtree中刪除,和remove()不同,此時fragment的狀態依然保持着,在使用 attach()時會再次調用onCreateView()來重繪視圖,注意使用detach()後fragment.isAdded()方法將返回 false,在使用attach()還原fragment後isAdded()會依然返回false(需要再次確認)
執行detach()和replace()後要還原視圖的話, 可以在相應的fragment中保持相應的view,並在onCreateView()方法中通過view的parent的removeView()方法將view和parent的關聯刪除後返回