我的应用当前的 minSdkVersion
是 16
,targetSdkVersion
,compileSdkVersion
是 21
。
当我第一次启动应用程序时,minSdkVersion
是10
,而我学习的书使用的是 v4 支持库。
我查看了我的应用程序,发现这些是我一直在使用的来自 v4 支持库的导入:
ActionBarDrawerToggle
DialogFragment
DrawerLayout
Fragment
FragmentActivity
FragmentManager
FragmentStatePagerAdapter
ListFragment
NavUtils
ViewPager
自从我提高了 minSdkVersion
之后,我认为我不再需要使用其中大部分的支持版本。不过,我相信我仍然必须使用 ViewPager
和 DrawerLayout
。
developer页面说:
Caution: When using classes from the Support Library, be certain you import the class from the appropriate package.
For example, when applying the ActionBar class:
android.support.v7.app.ActionBar when using the Support Library.
android.app.ActionBar when developing only for API level 11 or higher.
所以,我的问题是:
1) 由于我的 API 级别最低为 16,我可以简单地对上述所有内容使用类似于 android.app.Fragment
的导入吗? (ViewPager
和 DrawerLayout
除外)
2)对于ViewPager
和DrawerLayout
,使用v4或v7或其他支持库版本有区别吗?
欢迎任何建议。谢谢!
最佳答案
首先,对于 Fragment
及其所有相关工具(FragmentManager
、FragmentTransaction
等),最重要的是使用导入 < strong>consistently(即不要混搭)。我认为,这就是文档想要表达的意思。
也就是说……
如果您想使用这些类的本地版本而不是支持类,但要小心:支持库还添加了一些 API 级别 16 中不存在的方法和回调(一个重要的例子是 getChildFragmentManager()
。所以,基本上,它归结为您正在使用的 Fragments 的所有功能是否可用于您将支持的所有 API 级别的原生 Fragments。
此外,使用支持库 Fragments 意味着它们在所有 Android 版本中的行为应该完全相同,而在 native 实现中它们可能会有所不同。
在我们的特殊情况下,我们决定继续使用支持库,但使用 YMMV。
至于第二个问题,我不认为有特定于 v7 的 ViewPager(至少,我认为是这样)。 v7 库是附加组件(appcompat、gridlayout 等)。
关于android - 在为 Android 4.1 及更高版本开发时使用支持库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27595106/