天天看點

FragmentManager的使用

FragmentManager的使用

申明fragmentManager

  • 在activity中申明
FragmentManager mFgManager=getFragmentManager();
或者
FragmentManager mFgManager=getSupportFragmentManager()
           
  • fragment

    中可以先

    getActivity()

  • 套娃:在

    activity

    中擷取其

    fragmen

    t的

    FragmentManager

    getChildFragmentManager()

使用framentManager執行個體

  • beginTransaction()

    開啟事務
  • commit()

    送出事務
  • add()

    add方法會直接将一個

    fragment

    添加到指定的id布局中,不管這個布局容器中原來有沒有,無條件覆寫。是以會疊加,而之前的

    fragment

    隻是被遮擋,

    view

    并不會被摧毀
  • getFragmentbyTag()

    getFragmentbyId()

    這兩個方法可以獲得有相應的tag或id屬性的fragment(這兩個屬性也可以通過xml裡布局設定),那麼就出現了有多個fragment擁有相同的tag和id,那調用該方法獲得的是哪個呢?實測獲得的是最頂層的那個fragment,也就是最近添加的
  • replace()

    該方法不同于add()可有其注釋的出,relplace()會先相應調用該布局id容器中中所有的add的fragment的

    remove()

    方法,然後在調用

    add()

    方法
  • remove()

    移除這個fragment,最後會調用

    onDetach()

  • show()

    hide()

    ,這裡要注意調用這兩個方法并不會走fragment的生命周期,即并不會調用

    onPause()

    onStop

    方法,而是隻調用了

    onHiddenChanged()

    方法,所有改變應在這個方法裡,重寫之