我的应用的当前minSdkVersion
为16
,targetSdkVersion
,compileSdkVersion
为21
。
当我第一次启动应用时,minSdkVersion
为10
,我正在学习的那本书使用了v4支持库。
我已经浏览了我的应用程序,我发现这些是我在v4支持库中使用的导入:
ActionBarDrawerToggle
DialogFragment
DrawerLayout
Fragment
FragmentActivity
FragmentManager
FragmentStatePagerAdapter
ListFragment
NavUtils
ViewPager
由于我已经提出minSdkVersion
,我认为我不再需要使用其中大部分支持版本。我相信我仍然需要使用ViewPager
和DrawerLayout
。
developer页说:
警告:使用支持库中的类时,请确保从相应的包中导入该类。
例如,在应用ActionBar类时:
使用支持库时android.support.v7.app.ActionBar。
android.app.ActionBar仅在API级别11或更高级别开发时。
所以,我的问题是:
1)我可以简单地使用类似于android.app.Fragment
的导入来完成上述所有操作,因为我的API级别至少为16吗? (ViewPager
和DrawerLayout
除外)
2)对于ViewPager
和DrawerLayout
,使用v4或v7或其他支持库版本有区别吗?
任何建议表示赞赏。谢谢!
答案 0 :(得分:2)
首先,使用Fragment
及其所有相关用具(FragmentManager
,FragmentTransaction
和& c),最重要的是使用导入始终 (也就是说,不要混合搭配)。我认为,这是文档想要提出的观点。
那说......
如果您想使用这些类的本机版本而不是支持版本,可以将android.support.v4.app.Fragment
的用法换成android.app.Fragment
,但要小心:支持库还添加了一些API级别16中没有的方法和回调(一个重要的例子是getChildFragmentManager()
。所以,基本上,它归结为你所使用的片段的所有功能是否都可用于您将支持的所有API级别中的本机片段。
此外,使用支持库Fragments意味着它们在所有Android版本中应该完全相同,而它们可能在本机实现中存在差异。
在我们的特定情况下,我们决定继续使用支持库,但是YMMV。
关于第二个问题,我不认为有一个特定于v7的ViewPager(至少,我认为是这样)。 v7库是附加组件(appcompat,gridlayout和& c)。