最近事情很忙,一個新項目趕著出來,但是很多功能都要重新做,一直在編寫代碼、Debug。今天因為一個新程序要使用Fragment來做,雖然以前也使用過Fragment,不過沒有仔細研究,今天順道寫篇文章記錄一下Fragment的使用。這文章主要參考了Android官網(wǎng)的介紹。
Fragment是Android3.0后增加的新控件,有點類似于Activity組件,也是用來承載各種View元素。Google增加這個玩意的目的是為了平板電腦里面可以復(fù)用部分顯示的View,只要寫好一個View,可以同時在手機和平板等不同尺寸的設(shè)備上使用。而且這個轉(zhuǎn)換過程系統(tǒng)幫你搞定了。下面我們分類說說Fragment的使用。
1、為何使用Fragment
下面是Android官網(wǎng)為了說明Fragment作用的例子:一個新聞應(yīng)用可以在屏幕左側(cè)使用一個fragment來展示一個文章的列表,然后在屏幕右側(cè)使用另一個fragment來展示一篇文章--2個fragment并排顯示在相同的一個activity中,并且每一個fragment擁有它自己的一套生命周期回調(diào)方法,并且處理它們自己的用戶輸入事件。 因此, 取代使用一個activity來選擇一篇文章而另一個activity來閱讀文章的方式,用戶可以在同一個activity中選擇一篇文章并且閱讀, 如圖所示:
當(dāng)運行在一個特別大的屏幕時(例如平板電腦),應(yīng)用可以在Activity A中嵌入2個fragment。但是如果在一個正常尺寸的屏幕(例如手機)上,沒有足夠的空間同時供2個fragment用, 因此, Activity A會僅包含文章列表的fragment, 而當(dāng)用戶選擇一篇文章時, 它會啟動ActivityB,它包含閱讀文章的fragment.因此, 應(yīng)用可以同時支持上圖中的2種設(shè)計模式。
fragment是一個為了界面視圖可以重用的組件,因為fragment定義了它自己的布局, 以及通過使用它自己的生命周期回調(diào)方法定義了它自己的行為,你可以將fragment包含到多個activity中. 這點特別重要, 因為這允許你將你的用戶體驗適配到不同的屏幕尺寸.舉個例子,你可能會僅當(dāng)在屏幕尺寸足夠大時,在一個activity中包含多個fragment,并且,當(dāng)不屬于這種情況時,會啟動另一個單獨的,使用不同fragment的activity。
2、創(chuàng)建Fragment
要創(chuàng)建一個Fragment, 必須創(chuàng)建一個 Fragment 的子類 (或者繼承自一個已存在的它的子類)。Fragment類的代碼看起來很像 Activity 。它包含了和activity類似的回調(diào)方法, 例如onCreate()、 onStart()、onPause()以及 onStop()。事實上, 如果你準(zhǔn)備將一個現(xiàn)成的Android應(yīng)用轉(zhuǎn)換到使用fragment,可能只需簡單的將代碼從你的activity的回調(diào)方法分別移動到你的fragment的回調(diào)方法即可。
下面我們看看Fragment的子類有哪些:
•DialogFragment 顯示一個浮動的對話框。用這個類來創(chuàng)建一個對話框,是使用在Activity類的對話框工具方法之外的一個好的選擇, 因為你可以將一個fragment對話框合并到activity管理的fragment back stack中,允許用戶返回到一個之前曾被摒棄的fragment。
•ListFragment 顯示一個由一個adapter(例如 SimpleCursorAdapter)管理的項目的列表, 類似于ListActivity。 它提供一些方法來管理一個list view, 例如onListItemClick()回調(diào)來處理點擊事件。
•PreferenceFragment 顯示一個 Preference對象的層次結(jié)構(gòu)的列表, 類似于PreferenceActivity。 這在為你的應(yīng)用創(chuàng)建一個"設(shè)置"activity時有用處。
3、Fragment生命周期
下面是Fragment的生命周期圖,摘自Android官網(wǎng)。
繼承了Fragment相關(guān)類之后,我們需要重寫幾個回調(diào)函數(shù),實現(xiàn)相關(guān)功能,下面面3個函數(shù)是我們一般都會重寫的回調(diào)方法:
//返回View給Activity使用
public View onCreateView()
{}
public void onPause()
{}
}
4、創(chuàng)建Fragment
fragment通常用來作為一個activity的用戶界面的一部分,并將它的layout提供給activity。為了給一個fragment提供一 個layout,你必須實現(xiàn) onCreateView()回調(diào)方法, 當(dāng)?shù)搅薴ragment繪制它自己的layout的時候,Android系統(tǒng)調(diào)用它。你的此方法的實現(xiàn)代碼必須返回一個你的fragment的 layout的根view。
另外,如果你的fragment是ListFragment的子類,它的默認(rèn)實現(xiàn)是返回從onCreateView()返回一個ListView,所以一般情況下不必實現(xiàn)它。
從onCreateView()返回的View, 也可以從一個layout的xml資源文件中讀取并生成。為了幫助你這么做, onCreateView() 提供了一個LayoutInflater 對象。
下面看個例子,從XML加載視圖View,跟我們一般的View里面動態(tài)加載解析XML生成View一樣。
•RSID:想要加載的layout的resource ID。
•container:加載的layout的父ViewGroup. 傳入container是很重要的, 目的是為了讓系統(tǒng)接受所要加載的layout的根view的layout參數(shù), 由它將掛靠的父view指定。
•布爾量:指示在加載期間, 展開的layout是否應(yīng)當(dāng)附著到ViewGroup(第二個參數(shù)) (在這個例子中, 指定了false, 因為系統(tǒng)已經(jīng)把展開的layout插入到container
主站蜘蛛池模板:
欧美精品一区二区三区免费视频
|
亚洲精品国产高清
|
天天操网
|
国产视频一区二区在线
|
中文字幕一区二区三区乱码在线
|
狠狠91|
羞羞网页|
久久精品视频久久
|
国产精品粉嫩白浆在线观看
|
日韩免费高清
|
日韩影院一区
|
精品国产乱码久久久久久1区2区
|
国产亚洲精品久
|
美女视频一区
|
卡通动漫第一页
|
中文字幕色
|
久久精品免费一区二区三区
|
日韩精品免费在线视频
|
av色资源
|
亚洲一区二区三区欧美
|
亚洲xxxx在线观看
|
欧美日韩一区二区三区在线观看
|
女国产精品视频一区二区三区
|
男女羞羞视频网站
|
羞羞网站在线观看入口免费
|
欧美中文字幕在线观看
|
国产一区二区在线视频观看
|
亚洲色图3p
|
草久在线视频
|
久久久久久久久久一区二区
|
久草视频在线播放
|
久久中文视频
|
欧美电影一区
|
亚洲精品久久久一区二区三区
|
正在播放一区
|
av先锋资源|
久久免费精品视频
|
日韩在线精品强乱中文字幕
|
久草在线青青草
|
国产精品久久久久久久午夜片
|
在线看免费黄色片
|