讀古今文學網 > Android程序設計:第2版 > Support Package >

Support Package

雖然fragment是在Android 3.0中引入的,而且在之前的API版本中沒有,但Google提供了Support Package使得老版本的Android設備也能夠使用fragment功能,這也是fragment最重要的特徵之一。

但是,Support Package並非沒有瑕疵。使用Support Package運行的應用即使在Android 3.0系統上也需要該Support Package。當選擇Support Package的實現策略時,Google面臨著一大難題。即使可以實現一款允許應用從Android 3.0到Android 2.0都不需要任何修改,就能夠透明移植的Support Package,還是會存在問題。應用必須將Support Package作為它的一部分。如果Support Package中定義的類名稱和Android 3.0中的類名稱完全相同,那麼嵌入該Support Package的應用如果不做一些類加載的特殊處理,就會出現定義的類名稱和系統中的衝突的問題。

因此,Support Package使用了一個不同的基礎包android.support.v4來定義兼容性功能。在Android 3.0上開發的程序需要修改代碼才能夠使用Support Package。你至少需要做出以下變化:

·把Support Package庫複製到你的項目中。在項目最上層創建名為lib的目錄,從Android SDK目錄extras/android/compatibility/v4/中複製android-support-v4.jar到該lib目錄中。

·把Support Package添加到你的項目build path中。在Eclipse中,選擇Package Explorer視圖下的library(可能需要刷新項目才能看到它:按下F5鍵或單擊Refresh)。一旦選中了library,就可以單擊Build Path→Add to Build Path。

·以上操作的快捷方式是:在應用內,通過Package Explorer,依次單擊Android Tools→Add Compatibility Library。

·把項目的build target從Android 3.0改成Android 2.0.1(Properties→Android)。這個操作會產生很多錯誤。

·一些指向android.app的輸入需要更新為指向android.support.v4.app。如果你的程序在修改build target之前沒有錯誤,則只需要找出錯誤的輸入,更新其基礎包。

·應用中使用fragment的所有活動必須把類Activity更新為其子類FragmentActivity。

·改變所有getFragmentManager的調用為getSupportFragmentManager。

·修復其他錯誤,測試應用程序。