1

还有一个兼容性问题。

问题

我需要使用tabbed action barapi 级别 3.0 及更高版本在fragments. 但是,我还需要能够fragments在 api 级别 < 3.0 中以某种方式在这些之间切换。

工作中的扳手是我已经下载了一个允许我使用的自定义兼容性库,google maps因此fragments我不能使用库。

问题

如何ActionBar在 3.0 及更高版本中实施选项卡式解决方案,同时满足 3.0 及更低版本的更大市场?

任何帮助都会很重要。

4

3 回答 3

3

你想要的是ActionBarSherlock。它使用 API >= 3 的本机操作栏,并为 API 级别 2.x 提供向后兼容性。还有 Action Bar Compatibility 示例项目(我相信列为 SupportAppNavigation)。我认为这本质上是一样的。

于 2012-08-06T15:24:24.053 回答
1

所以我不久前设法想出了一个解决方案,我花了一段时间才把它贴在这里。

这是对我有用的解决方案。我需要使用 ActionBar,但我还需要使用 MapActivity 和 FragmentActivity,因此无法使用 ActionBarSherlock。

我所做的是以下内容:

  • 创建了一个名为 CCActionBar 的片段,它通过将自身添加为侦听器来处理 CCTab 的触摸(解释如下)。它还扩展了一个名为 action barlayout 的布局,其中排列了选项卡和图像,只需在运行时引用选项卡。

  • 创建了一个名为 CCTab 的自定义视图,它表示操作栏的选项卡。当它被触摸时,它告诉它的侦听器(CCActionBar)它被触摸了。

  • 在我的主布局 xml 文件中有一个操作栏容器,我根据 API 级别在运行时显示或隐藏它。

  • 现在,在我的 OnCreate 方法的主要活动中,我检查我的 API 级别是否大于 3.0。如果是我只是实现标准的 ActionBar 确保我的自定义操作栏容器是不可见的。如果不是,我设置我的自定义操作栏并确保我的 xml 布局中的操作栏容器可见。

    • 然后我确保在使用任一方法时按下选项卡时,它的处理方式相同,因此一旦设置好,您就不必以任何不同的方式处理它。

我希望这可以帮助某个地方的人,或者至少让您知道如何进行。

于 2012-09-14T14:46:58.587 回答
0

我建议使用ActionBarSherlock来获得选项卡式操作栏功能。

我假设您还需要MapView. Fragment为此,我会推荐MapView in a Fragment (Honeycomb) 的解决方案 (查看带有示例代码的 user1414726 答案)。

我认为这是一个比使用库更好的解决方案,尽管它正在使用 deprecated LocalActivityManger。但在我看来,这比使用每个都是我假设您正在使用 Activity的子类的库更好。MapViewActivity

于 2012-08-06T15:35:04.590 回答