1

另一個兼容性問題。API級別> 3.0但仍支持API的操作欄<3.0

技術問題

我需要使用一個tabbed action bar在API級別3.0和更大,以fragments之間切換。但是,我也需要能夠在api級別< 3.0中以某種方式在這些fragments之間切換。

作品中的扳手是我已經下載了一個自定義兼容性庫,允許我使用google mapsfragments,因此我無法使用庫。

問題

我怎樣才能實現在3.0和更高的標籤ActionBar解決方案,也迎合了較大的市場是3.0和少嗎?

任何幫助將是盛大的。

回答

1

所以我設法找出了一個解決方案,它只是花了我一段時間才發佈在這裏。

這是適合我的解決方案。我需要使用ActionBar,但我也需要使用MapActivity以及FragmentActivity,因此無法使用ActionBarSherlock。

我所做的是以下幾點:

  • 創建了一個名爲CCActionBar片段,加入自己作爲一個偵聽器處理的CCTab的觸摸(下文解釋)。它還會擴展名爲action barlayout的佈局,該佈局具有排列的選項卡和圖像,只是在運行時引用選項卡。

  • 創建一個名爲CCTab的自定義視圖,它代表操作欄的選項卡。當它觸摸它告訴它的聽衆(CCActionBar)它被觸動。

  • 在我的主佈局xml文件中有一個操作欄容器,我根據API級別在運行時顯示或隱藏該容器。

  • 現在我在我的OnCreate方法的主要活動中檢查我的API級別是否大於3.0。如果是我只是實現標準的ActionBar,確保我的自定義操作欄容器不可見。如果它不是我設置我的自定義操作欄,並確保我的xml佈局中的操作欄容器是可見的。

    • 然後,我確保在使用任一方法時按下標籤時,它將以相同的方式處理,因此一旦設置完成,您不必處理它。

我希望這可以幫助別人的地方,或者至少給你如何進行的想法。

3

你想要的是ActionBarSherlock。它使用API​​> = 3的本機操作欄,併爲API級別2.x提供向後兼容性。還有Action Bar Compatibility示例項目(列爲SupportAppNavigation,我相信)。我認爲這本質上是一回事。

+0

我不能實現這個沒有廢除我的地圖片段的支持? – StuStirling 2012-08-06 15:31:22

+0

@ DiscoS2 - 爲了在3.0之前提供片段支持,您需要使用兼容性庫。 ActionBarSherlock是兼容性庫的擴展,所以我不明白你爲什麼需要廢棄地圖片段支持。你能解釋一下你的擔憂嗎? – 2012-08-06 15:33:39

+0

要實現谷歌地圖以及片段功能,我必須已經使用兼容性庫的擴展,所以我擔心我不能使用原始庫的兩個擴展? – StuStirling 2012-08-06 15:34:46

0

我推薦的是使用ActionBarSherlock來獲得標籤式操作欄功能。

我認爲你還需要MapView支持Fragment。爲此,我會推薦MapView in a Fragment (Honeycomb) 的解決方案(請參閱user1414726回答示例代碼)。

我認爲這是一個比使用庫更好的解決方案,雖然它使用了不推薦的LocalActivityManger。但在我看來,這是一個比使用庫更好的想法,其中每個Activity都是我假設您使用的MapViewActivity的子類。

相關問題