首先這裡不準備論述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...