fragment和activity之間的區別

2021-07-28 05:04:30 字數 1522 閱讀 7702

首先這裡不準備論述fragment和activity的具體定義,用法和概念。只是建立在了解這兩個東西的基礎上談區別。

在理解二者之間的區別的時候,只需要不斷的問自己乙個問題,就是fragment能做到的activity能做到嗎?可以做到的話沒問題,不可以做到的話,為什麼不可以呢?這個為什麼就是區別。先來看兩者的生命週期,這個不必多說。

1.fragment顯得更加靈活。可以直接在xml檔案中新增,activity則不能。

eg:android:id="@+id/left_fragment"

android:name="com.example.fragmenttest.leftfragment"……

…/>   

android:id="@+id/right_fragment"

android:name="com.example.fragmenttest.rightfragment"……

…/>

2.可以在乙個介面上靈活的替換一部分頁面,activity不可以,做不到。

替換的時候注意要將這個fragment放在返回棧上。

3.fragment和activity之間的通訊:(也就是控制項的相互操控)

fragment控制fragment:得到乙個activity,然後通過這個activity的getfragmentmanager()獲得該fragment的例項。

fragment控制activity:這個很簡單。每個fragment都有getactivity()得到乙個activity。

mainactivity activity=getactivity();

activity控制fragment:***fragment ***=getfragmentmanager().findfragmentbyid();

activity控制activity:這個顯然是通過intent  activity之間的通訊完成。別忘了在被開啟的活動中建立intent和得到intent一起進行,寫個靜態的actionstart()。

4.fragment和activity中控制項的載入

fragment的載入是通過oncreateview的時候通過inflater.inflate()載入布局,然後通過修改main.xml,在main.xml上增加註冊fragment標籤,然後通過android:name來載入你已經通過inflater載入的隱藏布局。

有幾個關鍵點:fragment是通過inflater載入view然後在main.xml中註冊得到的。當然如果你可以在fragment中得到view那就可以通過view.findviewid()來操控fragment上的具體控制項。

5.動態載入不同的fragment:

首先,監聽你的按鈕。

1.建立待載入fragment的例項

2.得到fragmentmanager,在活動中可以直接呼叫getfragmentmanager()方法獲得。

3.呼叫manager的begintansation()

4.用replace()改變不同的fragment

5.commit事務。

6.碎片的生命週期

Fragment和ViewPager組合用法小結

當viewpage有5個介面時 5個fragment 1 程式啟動,viewpage缺省會先載入前兩個介面,呼叫生命週期fragment1 oncreate oncreateview oncreateactivithy onstart onresume,fragment2 oncreate oncr...

Fragment 巢狀 Fragment 問題

今天又渾渾噩噩過了一天,被乙個問題困惑了一天。有時候要學會放下,先做其他的,也許下班回去就能想到解決方法呢。苦苦找問題,還是沒找到。問了老同學,一句解決了。大神啊。其實我遇到的就是fragment巢狀fragment的問題。這樣一搜答案就出來了,這裡也提醒一下自己,找到問題,再去解決問題。把解決方法...

Fragment和View的比較

fragment和view都有助於介面元件的復用,這在大型工程裡邊是特別重要的,但是二者又有所區別。1 fragment的復用粒度更大。fragment有完整的生命週期,從 設計角度講可以提高內聚性,不同情況下還可以設計不同的fragment,比如橫屏和豎屏情況下view的顯示不一樣,那麼可以建立2...