讀古今文學網 > Android程序設計:第2版 > 使得Activity、Fragment、Action Bar和多佈局能夠一起工作 >

使得Activity、Fragment、Action Bar和多佈局能夠一起工作

本章的示例程序通過Android UI系統,支持Activity、Fragment、Action Bar和多佈局(multiple layout)能夠一起工作,實現可以為很多應用服務的經典的應用骨架(app skeleton)。

讓Android系統選擇佈局是支持該設計模式的重要方面。其他方面是少量的工具類代碼,Fragment類和Activity類使用該工具類來管理Action Bar的選項卡。

Action Bar

在Android中,Action Bar和Fragment類一起支持創建可擴展的用戶界面設計。Action Bar是為了提供菜單、文本入口項的容器,用戶界面主要方面相關的其他「chrome」,以及支持在很多不同屏幕尺寸上顯示該用戶界面的一種簡單方式。我們需要組織代碼段,使得當使用某些選項卡選擇Fragment時,這些選項卡只出現在Action Bar中。

選項卡(Tab)和Fragment

在本節中,我們將綜合描述為列表和選項卡所用的Fragment,這些Fragment所包含的UI代碼段,以及在Fragment之間導航的Action Bar的選項卡。對於這個框架性的示例,我們創建了很多工具方法,這些工具方法有助於Activity和Fragment子類實現Fragment和選項卡之間的交互。這些工具方法是靜態方法,因此把它們組織成工具類,如下面的程序清單所示:

1 Fragment類在Action Bar的選項卡中是可選的,它還實現了SetData接口。SetData接口的定義中提供了一個工具方法,它通過兩種方式對接口進行抽像封裝,一是一個活動持有所有片段,二是需要啟動新的活動來顯示片段。

2 Initialize方法判斷是否存在和選項卡相關的片段要初始化。在代碼的前面部分,在Action Bar中可選的Fragment子類包含處理選項卡交互的代碼。Initialize方法把選項卡和片段關聯起來,真正調用的是接口。但是,在初始化之前,該方法判斷是否存在要初始化的片段,另一個實例顯示了是否通過片段調整佈局。

3 在我們給出的所有實例中,LoadTabFragments方法是最接近「做出判斷」:如果沒有片段來加載數據,該代碼段會啟動一個活動,顯示這些片段。此外,如果我們需要啟動該活動,我們通過傳遞給startActivity的Intent參數的extras變量把數據傳遞給該活動。