具有兼容性包的片段和>蜂窝

时间:2011-11-16 14:52:46

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

我必须为手机和平板电脑编写一个应用程序,我想为两者使用相同的项目。似乎使用兼容性库可以编写可重用的代码。

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

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

怎么做?

3 个答案:

答案 0 :(得分:0)

是的,您可以为两者共享相同的Fragment类。你不想触摸手机上的操作栏代码(预蜂窝),所以一个简单的方法是简单地将你的操作栏代码隐藏在你只在Fragment for honeycomb +中使用的适配器类中,参见答案{{3 }}

您可以做的一件事是使用菜单,menu-v11等版本/尺寸特定资源,将菜单项添加到平板电脑上的操作栏或手机上的标准菜单弹出窗口

答案 1 :(得分:0)

示例here中的解决方案似乎不合适。 对于联系人,问题是有一个已弃用的类但您仍然可以编译它。 如果您引用android.app.Fragment,则使用片段,您无法使用sdk< 3.0虽然如果使用import android.support.v4.app.Fragment你无法编译为蜂窝(只有你继续使用支持lib,即使在蜂窝上似乎不是最好的事情)。

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

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

答案 2 :(得分:0)

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

它使用API​​ 13+提供的本机ActionBar类,因此代码应该可以为您的“forks”重用(或者您可能不需要尽可能多地分叉)。

值得浏览网站......