2012-08-05 63 views
1

我读到getSupportFragmentManager(和其他getSupport函数)是为了Honeycomb(3.0)下的Android版本而创建的。 API 11+的这些等效函数是getFragmentManager(以及其他没有getSupport的函数)。强制使用API​​的getsupport函数14 +

我开始了一个minSdkVersion =“14”和targetSdkVersion =“15”的新项目。在文件夹库中,我可以看到android-support-v4.jar,因为min SDK版本是14,所以它不应该在那里。 此外,我尝试使用getFragmentManager,但它根本无法识别(我无法编译)。 所以,我没有选择,只能使用getSupportManagerFragment ...

这是正常的吗?

回答

1

如您所述,getFragmentManager()在API级别11+上可用。如果您不需要支持库中的类,则可以从libs文件夹中删除support-v4.jar,并使您的活动扩展为Activity而不是FragmentActivity。

如果您未使用支持库,那么您的导入内容中不应包含“support.v4.app”。

感谢您提供来自@Espiandev的提示,如果您在Eclipse中选择了“Tab + swipe application”模板,那么它将自动包含支持库,因为此模板使用仅存在于支持库中的ViewPager类。

+0

这并不是说你“不应该使用它们”......更重要的是它没有必要。如果您在新设备上使用支持库,应用程序不会中断... – 2012-08-05 18:47:07

+1

如果您选择了“Tab +轻扫应用程序”或类似模板,则可能会出现这种情况。 ViewPager类目前与不支持的Fragment系统不兼容。 – 2012-08-05 18:49:51

+0

@Espiandev是的,可能就是这样。 – 2012-08-05 18:52:46

0

当您创建项目时,Eclipse可能会自动将支持库添加到您的构建路径,这就是为什么它不能识别getFragmentManager。虽然没有必要,但在minSdkVersion大于或等于11的应用程序上使用支持库是完全正确的。事实上,你甚至可能会考虑这样做,因为它可以让以后支持旧设备变得更容易。

+0

包括支持库可能会增加二进制文件的大小,所以如果你不需要它,你可能不应该包含它。 我的理解是,如果您的minSdkVersion支持它,并且您拥有本机类导入(完全限定名称中没有support.v4.app的类),那么使用支持库不会阻止您调用getFragmentManager。对? – almalkawi 2012-08-05 19:02:11