我的应用程序当前的minSdkVersion16targetSdkVersioncompileSdkVersion21

当我第一次启动该应用程序时,minSdkVersion10,我正在学习的书使用了v4支持库。

我浏览了我的应用程序,发现这些是我从v4支持库中一直使用的导入:

ActionBarDrawerToggle
DialogFragment
DrawerLayout
Fragment
FragmentActivity
FragmentManager
FragmentStatePagerAdapter
ListFragment
NavUtils
ViewPager


由于我已经提出了minSdkVersion,因此我不再需要使用其中大多数的支持版本。我相信我仍然必须使用ViewPagerDrawerLayout

developer页面说:


警告:使用支持库中的类时,请确保您从适当的程序包中导入了该类。

例如,当应用ActionBar类时:

使用支持库时的android.support.v7.app.ActionBar。

仅针对API级别11或更高级别进行开发时的android.app.ActionBar。


所以,我的问题是:

1)由于我的API级别最低为16,我是否可以简单地使用类似于android.app.Fragment的导入方法? (ViewPagerDrawerLayout除外)

2)对于ViewPagerDrawerLayout,使用v4或v7或其他支持库版本之间有区别吗?

任何建议表示赞赏。谢谢!

最佳答案

首先,对于Fragment及其所有相关的用具(FragmentManagerFragmentTransaction,&c),最重要的是始终使用导入(即,不要混合使用)。我认为,这就是文档要提出的重点。

那就是...

如果要使用这些类的本机版本而不是支持类,可以将android.support.v4.app.Fragment的用法换成android.app.Fragment,但要小心:支持库还添加了API级别中不存在的一些方法和回调16(一个重要的例子是getChildFragmentManager()。因此,基本上,这取决于您使用的Fragments的所有功能是否可用于您将支持的所有API级别的本机Fragments。

同样,使用支持库Fragments意味着它们在所有Android版本中的行为应完全相同,尽管它们在本机实现中可能有所不同。

在我们的特殊情况下,我们决定继续使用支持库,但使用YMMV。

至于第二个问题,我认为不存在特定于v7的ViewPager(至少,我认为是这样)。 v7库是附加组件(appcompat,gridlayout和&c)。

10-05 21:14
查看更多