[Fragments](http://developer.android.com/guide/components/fragments.html)應該作為你實現UI界面默認選擇。你可以重復使用Fragments用戶接口來 組合成你的應用。我們強烈推薦使用Fragments而不是activity來呈現UI界面,理由如下:
* **提供多窗格布局解決方案**?Fragments 的引入主要將手機應用延伸到平板電腦,所以在平板電腦上你可能有A、B兩個窗格,但是在手機應用上A、B可能分別充滿 整個屏幕。如果你的應用在最初就使用了fragments,那么以后將你的應用適配到其他不同尺寸屏幕就會非常簡單。
* **屏幕間數據通信**?從一個Activity發送復雜數據(例如Java對象)到另外一個Activity,Android的API并沒有提供合適的方法。不過使用Fragment,你可以使用 一個activity實例作為這個activity子fragments的通信通道。即使這樣比Activity與Activity間的通信好,你也想考慮使用Event Bus架構,使用如?[Otto](https://square.github.io/otto/)?或者?[greenrobot EventBus](https://github.com/greenrobot/EventBus)作為更簡潔的實現。 如果你希望避免添加另外一個類庫,RxJava同樣可以實現一個Event Bus。
* **Fragments 一般通用的不只有UI**?你可以有一個沒有界面的fragment作為Activity提供后臺工作。 進一步你可以使用這個特性來創建一個[fragment 包含改變其它fragment的邏輯](http://stackoverflow.com/questions/12363790/how-many-activities-vs-fragments/12528434#12528434)?而不是把這個邏輯放在activity中。
* **甚至ActionBar 都可以使用內部fragment來管理**?你可以選擇使用一個沒有UI界面的fragment來專門管理ActionBar,或者你可以選擇使用在每個Fragment中 添加它自己的action 來作為父Activity的ActionBar.[參考](http://www.grokkingandroid.com/adding-action-items-from-within-fragments/).
很不幸,我們不建議廣泛的使用嵌套的[fragments](https://developer.android.com/about/versions/android-4.2.html#NestedFragments),因為 有時會引起[matryoshka bugs](http://delyan.me/android-s-matryoshka-problem/)。我們只有當它有意義(例如,在水平滑動的ViewPager在 像屏幕一樣fragment中)或者他的確是一個明智的選擇的時候才廣泛的使用fragment。
在一個架構級別,你的APP應該有一個頂級的activity來包含絕大部分業務相關的fragment。你也可能還有一些輔助的activity ,這些輔助的activity與主activity 通信很簡單限制在這兩種方法?[`Intent.setData()`](http://developer.android.com/reference/android/content/Intent.html#setData(android.net.Uri))?或?[`Intent.setAction()`](http://developer.android.com/reference/android/content/Intent.html#setAction(java.lang.String))或類似的方法。