FragmentTransaction的add(),hide(),show()方法與Replace()方法的比較
1、在面試的時候,我一開始寫的是FragmentTransaction的add()、hide()、show()、解決Fragment直接切換時的閃動問題,這個問題我一開始想的比較簡單,首先我先講一下這幾個方法的作用吧。
add():向Activity加入一個片段,這個片段在activity容器中有他自己的檢視。
hide():隱藏已經存在的Fragment,但是僅僅對已經新增到父容器中的Fragment有關,隱藏Fragment的View
show():顯示一個以前被隱藏的Fragment,這僅僅對已經新增到activity中的Fragment有關,顯示Fragment的View
detach():Fragment的檢視被銷燬,但是它的狀態沒有被銷燬,還是被fragment manager
管理。
attach():Fragment的view重新載入到UI檢視中,並顯示,也就是執行onCreateView()→onActivityCreate()→onStart()→onResume()
2、通過介紹上面的幾個方法,我們應該已經明白了各個方法的用途,之所以使用add(),hide(),replace()這幾個方法不會出現閃動的問題,主要是因為hide()方法僅僅是隱藏了Fragment的View,而沒有銷燬View,show()方法僅僅是顯示之前隱藏的View。
3、replace()是先remove(Fragment),然後add(Fragment),這樣會導致fragment的重新建立。
4、detach()是將Fragment的檢視銷燬,Fragment的狀態沒有被銷燬,還是被FragmentMenager管理。
通過上面的比較,大家應該明白了這幾個方法之間的區別了吧,這樣會使我們更加的靈活的掌握Fragment