【问题标题】:Fragment with compatibility pack and > honeycomb带有兼容包和 > 蜂窝的片段
【发布时间】:2011-11-16 14:52:46
【问题描述】:

我必须为手机和平板电脑编写一个应用程序,我想为两者使用同一个项目。看来使用兼容性库写出可重用的代码还是不错的。

是否可以为两者共享相同的 Fragment 类?

我正在考虑一个启动活动,它在蜂窝前活动和蜂窝后活动中“分叉”应用程序,重用相同的 Fragment 类。事实是,如果我包含 android.app.Fragment,片段将无法从 FragmentActivity 使用,反之亦然。 我只能使用 FragmentActivities,但这会阻止使用操作栏。

如何做到这一点?

【问题讨论】:

    标签: android android-activity compatibility android-fragments fragment


    【解决方案1】:

    示例here 中的解决方案似乎不合适。 对于联系人,问题是有一个已弃用的类,但您仍然可以编译它。 使用片段,如果您引用 android.app.Fragment,则无法使用 sdk

    我只是通过两个不同的项目来实现它,这些项目公开了两个不同的代理实现。比我为每个 sdk 使用正确的实现。它并不像看起来那么简单,因为您必须为 FragmentTransaction、FragmentManager 等做一个代理。

    它对我有用,但不适用于带有片段的设置。在这种情况下,使用片段的 xml 文件无法使用 pre honeycomb sdk 进行编译。

    【讨论】:

    • 嗯,它现在似乎工作了,为手机和平板电脑使用不同的活动,并使用来自 android.support.v4.app.Fragment 的相同片段。 ActionBar 代码仅由平板电脑的活动管理。使用 min_sdk = 7 和 target_sdk=13,使用 sdk 13 库就可以了!谢谢大家。
    • 但这意味着您也在蜂窝上使用支持库,对吧?那么设置呢?如果不使用两个独立的库,你怎么能有两个不同的实现?
    • 我只是在蜂窝上也使用了支持库,它似乎工作正常。我只在代码内部管理片段,而不是 xml。
    【解决方案2】:

    是的,您可以为两者共享相同的 Fragment 类。您不想在手机上触摸操作条代码(蜂窝前),因此一种简单的方法是将您的操作条代码简单地隐藏在适配器类中,您只能在您的 Fragment for honeycomb+ 中使用,请参阅答案here .

    然后您可以做的一件事是利用特定版本/大小的资源(例如菜单、menu-v11 等)将菜单项添加到平板电脑上的操作栏或手机上的标准菜单弹出窗口.

    【讨论】:

      【解决方案3】:

      您可以使用ActionBarSherlock,它是一个兼容性库,它集成并构建在 Google 自己的兼容性库之上,但为操作栏以及片段和所有其他好东西提供了向后兼容性。

      它使用 API 13+ 提供的本机 ActionBar 类,因此代码应该可重用于您的“分叉”(或者您可能不必分叉那么多/根本不需要分叉)。

      值得浏览一下网站...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 2011-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-22
        • 2020-03-09
        相关资源
        最近更新 更多