當前位置:編程學習大全網 - 源碼下載 - Android組件之Fragment(壹)---基礎知識與運用

Android組件之Fragment(壹)---基礎知識與運用

Fragment是Android3.0後引入的壹個新的API,他出現的初衷是為了適應大屏幕的平板電腦, 當然現在他仍然是平板APP UI設計的寵兒,而且我們普通手機開發也會加入這個Fragment, 我們可以把他看成壹個小型的Activity,又稱Activity片段!想想,如果壹個很大的界面,我們 就壹個布局,寫起界面來會有多麻煩,而且如果組件多的話是管理起來也很麻煩!而使用Fragment 我們可以把屏幕劃分成幾塊,然後進行分組,進行壹個模塊化的管理!從而可以更加方便的在 運行過程中動態地更新Activity的用戶界面!另外Fragment並不能單獨使用,他需要嵌套在Activity 中使用,盡管他擁有自己的生命周期,但是還是會受到宿主Activity的生命周期的影響,比如Activity 被destory銷毀了,他也會跟著銷毀!

引用官方的壹張圖片,其實已經說明問題了,就是為了更好的適配大屏,在大屏的時候,不需要去在壹個activity內部通過復雜的布局和界面去實現,只需要去在壹個activity內部,通過多個fragment來做界面布局實現即可,而且針對於多個fragment來說, 每個fragment有單獨的生命周期,

Demo樣例,我們在壹個界面中,有上下兩個fragment,如圖所示:

Step 2: Fragment創建,視圖加載,數據賦值

BlankFragment .java

Step 3: Activity在onCreate( )方法中調用setContentView()之後調用FragmentTransaction 進行事務提交

FragmentTestActivity.java

在xml中聲明兩個fragment,指定為具體的fragment

Step 1:定義Fragment的布局,就是fragment顯示內容的

Step 2:自定義壹個Fragment類,需要繼承Fragment或者他的子類,重寫onCreateView()方法 在該方法中調用:inflater.inflate()方法加載Fragment的布局文件,接著返回加載的view對象

BlankFragment.java

Step 3:在需要加載Fragment的Activity對應的布局文件中添加fragment的標簽, 記住,name屬性是全限定類名哦,就是要包含Fragment的包名,如:

Step 4: Activity在onCreate( )方法中調用setContentView()加載布局文件即可!

針對在壹個Activity中的某個Layout中切換Fragment,,無非兩種方法:

我們自己看壹下方法註釋

源碼方法註釋裏面說的很明白,這個方法會移除所有的fragment,然後添加當前的fragment。

這時分為兩種情況,壹種是fragment已有並且在前臺展示,壹種是未有或者在後臺,針對於前者,此時replace,生命周期不會發生變化,針對後者,生命周期會重新走

分為兩種情況,壹種fragment已存在,壹種未存在,針對於前者,生命周期無變化,但是會回調onHiddenChanged方法,針對於後者,生命周期會創建壹次。

1.Fragment是Google官方引入的壹個為了適配大屏、多頁面的壹個組件。您可以理解為它就是壹個類而已,只不過裏面包含了View,並且與activity的生命周期進行了關聯。

2.動態加載與靜態加載相對來說,建議使用動態加載,靜態加載固定在了xml文件中,永遠不變。

3.replace的fragment如果不在前臺,會執行所有生命周期,反之不會執行任何生命周期方法;hide+show生命周期並不會發生變化,但是會回調onHiddenChanged方法,在實際開發中,建議add之後,使用hide+show來操作fragment,壹方面減少資源的重復加載和創建,另外壹方面提升用戶體驗感。

4.fragment的生命周期大體上和activity壹致,但是前期和後期多了壹些東西,因為fragment內部有view,那麽這個view需要進行創建、然後添加到activity內部,所以相應的在onCreate與onStart之間就多了幾個方法-onCreateView、onViewCreated。相同的道理,fragment的view與activity解綁,也相應的在onStop與onDestory之間多個方法-onDestroyView。onAttach與onDetach可以理解為視圖與activity產生關聯和接觸關聯,是最開始和最後的步驟。

Demo地址

  • 上一篇:android p 如何調試 init
  • 下一篇:車速和發動機轉速算法這兩種那個是對的
  • copyright 2024編程學習大全網