Android面向面試複習----Fragment複習

Fragment複習

1. Fragment爲什麼被稱爲第五大組件

  1. Fragment爲什麼被稱爲第五大組件

    使用頻率高,有自己的生命週期,同時可以靈活的加載到Activity中去。它是依賴於Activity的,不能單獨存在。

  2. Fragment的加載

    1. 靜態加載

      在xml佈局中使用fragment標籤加載進來,name指定對應的Fragment即可。

    2. 動態加載

      // 獲取Fragment管理器
      FragmentManager fm = getFragmentManager();
      //開啓事務
      FragmentTransaction transaction = fm.beginTransaction();
      DemoFragment mDemoFragment = new DemoFragment();
      //將Fragment加載到Activity中
      transaction.replace(R.id.content_layout, mDemoFragment);
      //將該Fragment添加到回退棧中
      transaction.addToBackStack("demoFragment");
      //提交
      transaction.commit();
      
  3. FragmentPagerAdapter和FragmentStatePagerAdapter的區別

    Fragment和ViewPager結合使用的時候,可能會用到FragmentPagerAdapter和FragmentStatePagerAdapter

    • FragmentPagerAdapter適用於頁面較少的情況;FragmentStatePagerAdapter適用於頁面較多的情況,因爲它在切換頁面時,進行了內存回收。
    • 區別在於destroyItem方法,FragmentPagerAdapter中只是將視圖解綁mCurTransaction.detach((Fragment)object);,並未從Adapter中移除。FragmentStatePagerAdapter中進行了remove操作mCurTransaction.remove(fragment);,可以被垃圾回收器直接回收。

2. Fragment的生命週期

Activity和Fragment的生命週期之前的關係

這裏寫圖片描述

解釋一下,比Activity多出來的幾個生命週期方法:

  • onAttach():和Activity關聯時調用
  • onCreateView():創建Fragment視圖
  • onActivityCreated():當Activity調用了onCreate時調用
  • onDestoryView:Fragment視圖被移除時調用
  • onDetach:Fragment和Activity取消關聯時調用。

3. Fragment之間的通信

  1. 和Activity通信:

    在Fragment中通過getActivity()就可以操作Activity中相關的方法。

  2. 在Activity中調用Fragment中的方法

    在Fragment中創建一個接口,讓Activity實現該接口,進行接口回調執行。

  3. Fragment和Fragment之間通信

    在Fragment中獲取Activity,然後通過Activity通過findFragmentById()獲取另一個Fragment,即可進行通信。

4. Fragment管理器:FragmentManager

FragmentManager一般是用來操作Fragment的,但是直接操作Fragment的是FragmentTransaction而不是它自己。

FragmentTransaction的常用Api:

  • replace:替換Fragment實例,是remove和add的結合
  • add:將Fregment添加到對應的id佈局中
  • remove:將Fragment從Activity中移除
  • addToBackStack:將Fragment添加到回退棧中
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章