android - 在为 Android 4.1 及更高版本开发时使用支持库

标签 android android-support-library

我的应用当前的 minSdkVersion16targetSdkVersioncompileSdkVersion21

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

我查看了我的应用程序,发现这些是我一直在使用的来自 v4 支持库的导入:

ActionBarDrawerToggle
DialogFragment
DrawerLayout
Fragment
FragmentActivity
FragmentManager
FragmentStatePagerAdapter
ListFragment
NavUtils
ViewPager

自从我提高了 minSdkVersion 之后,我认为我不再需要使用其中大部分的支持版本。不过,我相信我仍然必须使用 ViewPagerDrawerLayout

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 的导入吗? (ViewPagerDrawerLayout 除外)

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

欢迎任何建议。谢谢!

最佳答案

首先,对于 Fragment 及其所有相关工具(FragmentManagerFragmentTransaction 等),最重要的是使用导入 < 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/

相关文章:

android - 检索项目 : No resource found that matches the given name 'android:Widget.Material.Button.Colored' 的父项时出错

android - 如何为操作项的弹出窗口设置自定义颜色,包括溢出菜单?

android - 你能在替换时给 fragment 额外的东西吗?

android - 在 android 中使用过多的网络调用

android - 显示以下用户在 React Native 和 Firebase 中的帖子

android - java.lang.NoClassDefFoundError : Failed resolution of: Landroid/support/v4/util/ArrayMap

java - 当我将 ADT 插件安装到 eclipse 3.5.2 时发出警告

c# - 如何使用 ZeroMQ 监控机制检测网络故障?

android - 多个 dex 文件定义 Landroid/support/v4/

android - 在支持设计库中找不到 android.support.design.widget.Snackbar