android Fragments详解一:概述
Fragment是activity的界面中的一部分或一種行為。你可以把多個(gè)Fragment們組合到一個(gè)activity中來(lái)創(chuàng)建一個(gè)多面界面并且你可以在多個(gè)activity中重用一個(gè)Fragment。你可以把Fragment認(rèn)為模塊化的一段activity,它具有自己的生命周期,接收它自己的事件,并可以在activity運(yùn)行時(shí)被添加或刪除。
Fragment不能獨(dú)立存在,它必須嵌入到activity中,而且Fragment的生命周期直接受所在的activity的影響。例如:當(dāng)activity暫停時(shí),它擁有的所有的Fragment們都暫停了,當(dāng)activity銷(xiāo)毀時(shí),它擁有的所有Fragment們都被銷(xiāo)毀。然而,當(dāng)activity運(yùn)行時(shí)(在onResume()之后,onPause()之前),你可以單獨(dú)地操作每個(gè)Fragment,比如添加或刪除它們。當(dāng)你在執(zhí)行上述針對(duì)Fragment的事務(wù)時(shí),你可以將事務(wù)添加到一個(gè)棧中,這個(gè)棧被activity管理,棧中的每一條都是一個(gè)Fragment的一次事務(wù)。有了這個(gè)棧,就可以反向執(zhí)行Fragment的事務(wù),這樣就可以在Fragment級(jí)支持“返回”鍵(向后導(dǎo)航)。
當(dāng)向activity中添加一個(gè)Fragment時(shí),它須置于ViewGroup控件中,并且需定義Fragment自己的界面。你可以在layoutxml文件中聲明Fragment,元素為:<fragment>;也可以在代碼中創(chuàng)建Fragment,然后把它加入到ViewGroup控件中。然而,Fragment不一定非要放在activity的界面中,它可以隱藏在后臺(tái)為actvitiy工作。
本章描述如何使用fragment,包括fragment在加入activity的后退棧中時(shí)如何保持自己的狀態(tài),如何與activity以及其它fragment們共享事件,如何顯示在activity的動(dòng)作欄,等等。
設(shè)計(jì)哲學(xué)
Android從3.0開(kāi)始引入fragment,主要是為了支持更動(dòng)態(tài)更靈活的界面設(shè)計(jì),比如在平板上的應(yīng)用。平板機(jī)上擁有比手機(jī)更大的屏幕空間來(lái)組合和交互界面組件們。Fragment使你在做那樣的設(shè)計(jì)時(shí),不需應(yīng)付view樹(shù)中復(fù)雜的變化。通過(guò)把activity的layout分成fragment,你可以在activity運(yùn)行時(shí)改變它的樣子,并且可以在activity的后退棧中保存這些改變。
例如:寫(xiě)一個(gè)讀新聞的程序,可以用一個(gè)fragment顯示標(biāo)題列表,另一個(gè)fragment顯示選中標(biāo)題的內(nèi)容,這兩個(gè)fragment都在一個(gè)activity上,并排顯示。那么這兩個(gè)fragment都有自己的生命周期并響應(yīng)自己感興趣的事件。于是,不需再像手機(jī)上那樣用一個(gè)activity顯示標(biāo)題列表,用另一個(gè)activity顯示新聞內(nèi)容;現(xiàn)在可以把兩者放在一個(gè)activity上同時(shí)顯示出來(lái)。如下圖:
Fragment必須被寫(xiě)成可重用的模塊。因?yàn)?/span>fragment有自己的layout,自己進(jìn)行事件響應(yīng),擁有自己的生命周期和行為,所以你可以在多個(gè)activity中包含同一個(gè)Fragment的不同實(shí)例。這對(duì)于讓你的界面在不同的屏幕尺寸下都能給用戶(hù)完美的體驗(yàn)尤其重要。比如你可以在程序運(yùn)行于大屏幕中時(shí)啟動(dòng)包含很多fragment的activity,而在運(yùn)行于小屏幕時(shí)啟動(dòng)一個(gè)包含少量fragment的activity。
舉個(gè)例子--還是剛才那個(gè)讀新聞的程序-當(dāng)你檢測(cè)到程序運(yùn)行于大屏幕時(shí),啟動(dòng)activityA,你將標(biāo)題列表和新聞內(nèi)容這兩個(gè)fragment都放在activityA中;當(dāng)檢測(cè)到程序運(yùn)行于小屏幕時(shí),還是啟動(dòng)activityA,但此時(shí)A中只有標(biāo)題列表fragment,當(dāng)選中一個(gè)標(biāo)題時(shí),activityA啟動(dòng)activityB,B中含有新聞內(nèi)容fragment。
總結(jié)
以上是生活随笔為你收集整理的android Fragments详解一:概述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: VRRP在生产环境中的应用
- 下一篇: 使用纯索引子查询优化MySQL的分页查询