我的应用程序当前的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。
仅针对API级别11或更高级别进行开发时的android.app.ActionBar。
所以,我的问题是:
1)由于我的API级别最低为16,我是否可以简单地使用类似于
android.app.Fragment
的导入方法? (ViewPager
和DrawerLayout
除外)2)对于
ViewPager
和DrawerLayout
,使用v4或v7或其他支持库版本之间有区别吗?任何建议表示赞赏。谢谢!
最佳答案
首先,对于Fragment
及其所有相关的用具(FragmentManager
,FragmentTransaction
,&c),最重要的是始终使用导入(即,不要混合使用)。我认为,这就是文档要提出的重点。
那就是...
如果要使用这些类的本机版本而不是支持类,可以将android.support.v4.app.Fragment
的用法换成android.app.Fragment
,但要小心:支持库还添加了API级别中不存在的一些方法和回调16(一个重要的例子是getChildFragmentManager()
。因此,基本上,这取决于您使用的Fragments的所有功能是否可用于您将支持的所有API级别的本机Fragments。
同样,使用支持库Fragments意味着它们在所有Android版本中的行为应完全相同,尽管它们在本机实现中可能有所不同。
在我们的特殊情况下,我们决定继续使用支持库,但使用YMMV。
至于第二个问题,我认为不存在特定于v7的ViewPager(至少,我认为是这样)。 v7库是附加组件(appcompat,gridlayout和&c)。