FragmentManager的使用
申明fragmentManager
- 在activity中申明
FragmentManager mFgManager=getFragmentManager();
或者
FragmentManager mFgManager=getSupportFragmentManager()
- 在
中可以先fragment
getActivity()
- 套娃:在
中擷取其activity
t的fragmen
:FragmentManager
getChildFragmentManager()
使用framentManager執行個體
-
開啟事務beginTransaction()
-
送出事務commit()
-
add方法會直接将一個add()
添加到指定的id布局中,不管這個布局容器中原來有沒有,無條件覆寫。是以會疊加,而之前的fragment
隻是被遮擋,fragment
并不會被摧毀view
-
與getFragmentbyTag()
這兩個方法可以獲得有相應的tag或id屬性的fragment(這兩個屬性也可以通過xml裡布局設定),那麼就出現了有多個fragment擁有相同的tag和id,那調用該方法獲得的是哪個呢?實測獲得的是最頂層的那個fragment,也就是最近添加的getFragmentbyId()
-
該方法不同于add()可有其注釋的出,relplace()會先相應調用該布局id容器中中所有的add的fragment的replace()
方法,然後在調用remove()
方法add()
-
移除這個fragment,最後會調用remove()
onDetach()
-
和show()
,這裡要注意調用這兩個方法并不會走fragment的生命周期,即并不會調用hide()
,onPause()
方法,而是隻調用了onStop
方法,所有改變應在這個方法裡,重寫之onHiddenChanged()