FragmentTransaction add() hide() detach() show()

使用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的關聯刪除後返回


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章