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