0

我的另一个兼容性问题。

背景

我现在有一个适用于所有 API 的应用程序,因为我下载了一个自定义的谷歌地图兼容性支持库,它是 的扩展,Compatibility Support Library并允许我在 API 级别 < 3.0 的地图中拥有片段和地图。它通过让我扩展我的活动来FragmentActivity做到这一点,因为这个自定义库也是MapActivity.

问题

我还需要Action Bar在我的应用程序中在不同的 API 级别上实现一个选项卡。可以使用ActionBarSherlock. 但是,这还涉及Activity`` by使用此自定义库下载和扩展我的 FragmentActivity`,这是一个问题,因为我无法使用这两个库版本进行扩展,因此我失去了拥有地图的能力?

问题

如何在我的应用程序中同时拥有这两个功能?

如果这不是这样做的方法,我该怎么做?

提前致谢。

更新

所以我实现了一个系统,我可以在 api 大于 3.0 的情况下显示操作栏,如果不是,则不显示。

这是代码。

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
        ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.show();
} else {
        //Do something else
}

可能的解决方案

最好的方法是创建一个自定义的ActionBar 模块,它只是一组具有一些功能的视图,以使其行为并看起来像一个操作栏?

4

2 回答 2

0

您是否尝试扩展您FragmentActivity的 by SherlockActivity

于 2012-08-08T12:29:36.347 回答
0

所以这是我想出的解决方案。

ActionBarSherlock对我来说不是一个选择,因为我已经在使用允许我一起使用的兼容性库版本,GoogleMaps如果Fragments我使用该ActionBarSherlock库,我将失去此功能。

我的解决方案

我决定实现我自己的自定义ActionBar,它是Views和的组合TextViews

我有一个类扩展Fragment(android支持版本)被调用CCActionBar,它膨胀了三个名为CCTabwhich extend的自定义对象TextView。这三个选项卡(正如它的名称所说)充当我的选项卡,因此当它们被触摸时我们会覆盖它们,将它们传递给我们的CCActionBar,然后将其传递给我们MainActivity以处理任何导航。

Custom Action Bar为了检测由于 API 级别我们是否需要创建它,我使用以下代码。

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
   //setup a normal action bar because the api level supports it
} else {
   //setup our custom action bar
}

所以这就是我的解决方案,它可能不是正确的,但它对我有用。

有任何问题请提出。

于 2012-08-14T13:48:42.353 回答