片段与兼容包和>蜂窝

片段与兼容包和>蜂窝

问题描述:

我必须为手机和平板电脑写一个应用程序,我想为两者使用相同的项目。似乎使用兼容性库编写可重用的代码是很好的。片段与兼容包和>蜂窝

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

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

如何做到这一点?

示例here中的解决方案似乎不合适。 对于联系人,问题是有一个已弃用的类,但仍然可以编译它。 如果你引用android.app.Fragment,如果使用导入android.support.v4.app.Fragment的片段,你不能编译该类,但如果使用导入android.support.v4.app.Fragment,则无法编译该类(只有当你即使在蜂窝上也不停地使用支持库,这似乎并不是最好的做法)。

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

它对我有用,但它不适用于具有片段的设置。在这种情况下,使用fragment的xml文件不能用pre-honeycomb sdk编译。

+0

嗯,似乎现在的工作,使用手机和平板电脑不同的活动,并使用相同的碎片android.support.v4.app.Fragment。 ActionBar代码仅由平板电脑的活动管理。 使用min_sdk = 7和target_sdk = 13,使用sdk 13 libs会诀窍! 感谢大家。 – DeliriumTremens

+0

但这意味着你也使用蜂窝上的支持库,对吧?那么设置呢?如何在不使用两个分离的库的情况下实现两种不同的实现? – kingston

+0

我只是使用支持库也在蜂窝上,它似乎工作正常。我仅在代码中管理片段,而不是xml。 – DeliriumTremens

是的,你可以共享相同的Fragment类。你不想在手机上触摸操作栏代码(蜂窝前),所以一个简单的方法是简单地将操作栏代码隐藏在适用于蜂窝+的Fragment中的适配器类中,请参阅回答here

然后你可以做的一件事就是利用特定版本/大小的资源,例如菜单,菜单v11等将菜单项添加到平板电脑上的操作栏或标准菜单弹出窗口中电话。

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

它使用由API 13+提供的原生ActionBar类,因此代码应该可以重用于您的“叉子”(或者您可能不必分叉/根本)。

值得拥有网站的浏览...