在针对Android 4.1及以上版本开发时使用支持库

3

我的应用程序当前的minSdkVersion16targetSdkVersioncompileSdkVersion均为21

在我刚开始开发应用程序时,minSdkVersion10,而我学习的教材使用了v4支持库。

我已经检查了我的应用程序,并找到了我一直从v4支持库中使用的导入项:

ActionBarDrawerToggle
DialogFragment
DrawerLayout
Fragment
FragmentActivity
FragmentManager
FragmentStatePagerAdapter
ListFragment
NavUtils
ViewPager

自从我升级了minSdkVersion,我认为我不再需要使用大部分支持版本了。虽然我认为我仍需要使用ViewPagerDrawerLayout开发者页面上说:

注意: 当使用Support Library中的类时,请确保您从适当的包中导入类。

例如,在应用ActionBar类时:

在使用Support Library时,使用android.support.v7.app.ActionBar。

仅开发API 11或更高版本时,使用android.app.ActionBar。

所以,我的问题是:
1) 我是否可以仅使用类似于android.app.Fragment的导入方式来使用以上所有内容,因为我的API等级最低为16?(除了ViewPagerDrawerLayout
2) 对于ViewPagerDrawerLayout,使用v4、v7或其他支持库版本有什么区别吗?
感谢任何建议。谢谢!
1个回答

3
首先,使用Fragment及其所有相关配套设施(FragmentManagerFragmentTransaction等)最重要的是要一致地使用导入(也就是说,不要混合使用)。我认为这就是文档想要表达的意思。
话虽如此...
如果你想使用原生版本的这些类而不是支持库中的android.support.v4.app.Fragment,你可以交换使用它们,但要小心:支持库还添加了一些在API级别16中不存在的方法和回调(一个重要的例子是getChildFragmentManager())。因此,基本上,这取决于您正在使用的Fragments的所有功能是否在您将支持的所有API级别中都可用于原生Fragments。
此外,使用支持库Fragments意味着它们应该在所有Android版本中表现得完全相同,而在原生实现中可能会有差异。
在我们的特定情况下,我们决定继续使用支持库,但可能会因人而异。
至于第二个问题,我不认为有一个特定于v7的ViewPager(至少我是这样认为的)。v7库是附加组件(appcompat、gridlayout等)。

谢谢回复!我不认为我的应用程序使用任何与本地版本不兼容的方法。但是,如果我以后必须切换回支持版本,除了额外的依赖关系之外,使用支持库版本是否有任何缺点? - OnThisDayFiftyYearsAgo
@OnThisDayFiftyYearsAgo 不是特别的。我认为这可能更可取,因为您将在所有Android版本中运行相同的Fragment代码。 - matiash
继续使用v7支持库的好处是,他们更新了库以支持最新的Android 5.0(许多众所周知的)功能。因此,一旦您在项目中集成了这些库,您只需要更新gradle设置即可。我建议您使用支持v7库。顺便说一下,有些情况下v7会使用v4。 - Nguyễn Hoài Nam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接