Activities and Fragments

2018-02-24 16:12 更新

Fragments應(yīng)該作為你實(shí)現(xiàn)UI界面默認(rèn)選擇。你可以重復(fù)使用Fragments用戶接口來 組合成你的應(yīng)用。我們強(qiáng)烈推薦使用Fragments而不是activity來呈現(xiàn)UI界面,理由如下:

  • 提供多窗格布局解決方案?Fragments 的引入主要將手機(jī)應(yīng)用延伸到平板電腦,所以在平板電腦上你可能有A、B兩個(gè)窗格,但是在手機(jī)應(yīng)用上A、B可能分別充滿 整個(gè)屏幕。如果你的應(yīng)用在最初就使用了fragments,那么以后將你的應(yīng)用適配到其他不同尺寸屏幕就會(huì)非常簡(jiǎn)單。

  • 屏幕間數(shù)據(jù)通信?從一個(gè)Activity發(fā)送復(fù)雜數(shù)據(jù)(例如Java對(duì)象)到另外一個(gè)Activity,Android的API并沒有提供合適的方法。不過使用Fragment,你可以使用 一個(gè)activity實(shí)例作為這個(gè)activity子fragments的通信通道。即使這樣比Activity與Activity間的通信好,你也想考慮使用Event Bus架構(gòu),使用如?Otto?或者?greenrobot EventBus作為更簡(jiǎn)潔的實(shí)現(xiàn)。 如果你希望避免添加另外一個(gè)類庫,RxJava同樣可以實(shí)現(xiàn)一個(gè)Event Bus。

  • Fragments 一般通用的不只有UI?你可以有一個(gè)沒有界面的fragment作為Activity提供后臺(tái)工作。 進(jìn)一步你可以使用這個(gè)特性來創(chuàng)建一個(gè)fragment 包含改變其它fragment的邏輯?而不是把這個(gè)邏輯放在activity中。

  • 甚至ActionBar 都可以使用內(nèi)部fragment來管理?你可以選擇使用一個(gè)沒有UI界面的fragment來專門管理ActionBar,或者你可以選擇使用在每個(gè)Fragment中 添加它自己的action 來作為父Activity的ActionBar.參考.

很不幸,我們不建議廣泛的使用嵌套的fragments,因?yàn)?有時(shí)會(huì)引起matryoshka bugs。我們只有當(dāng)它有意義(例如,在水平滑動(dòng)的ViewPager在 像屏幕一樣fragment中)或者他的確是一個(gè)明智的選擇的時(shí)候才廣泛的使用fragment。

在一個(gè)架構(gòu)級(jí)別,你的APP應(yīng)該有一個(gè)頂級(jí)的activity來包含絕大部分業(yè)務(wù)相關(guān)的fragment。你也可能還有一些輔助的activity ,這些輔助的activity與主activity 通信很簡(jiǎn)單限制在這兩種方法?Intent.setData()?或?Intent.setAction()或類似的方法。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)