android.app.DialogFragment 中的 getChildFragmentManager()

getChildFragmentManager() in android.app.DialogFragment

我的应用中的 minSDK 是 16。

我使用 Fragments 并阅读了很多关于 android.app.Fragment 和 android.support.v4.app.Fragment 之间的区别的文章。大多数答案的解释是,如果我支持 11 以下的设备,我必须使用支持库。我的 minSDK 是 16,所以我决定为我所有的 Fragments 和 FragmentManagers 使用 android.app 库。

现在我需要 nestedFragments,为此我需要 DialogFragment 中的 getChildFragmentManager()... 本机 Fragment 库上的 getChildFragmentManager 需要 api 17. 类似问题的解决方案是使用来自Android 支持包的 support-v4。

我很困惑。我是否必须将应用程序中所有使用的 Fragments 和 FragmentManager 更改为支持包?仅在低于 11 的 minSDK 上使用支持包的建议如何?谁能解释一下?

非常感谢!

不建议您使用 min SDK < 11 的支持库。如果您需要使用它想在 运行 < 11 的设备上使用片段,因为那是引入片段 API 的时间。但是,正如您所发现的,支持库还为 Android.

的更高版本中引入的其他 API 提供向后兼容性。

大多数开发人员会建议您始终将支持库用于应用程序组件,例如 Activity 和 Fragment(以及支持库提供的通知和大多数其他功能),因为您可以所有最新的 API 和功能,加上你得到的错误更少,因为 Android 团队无法修复已发布平台中的错误。

支持库会在后台尽可能利用平台 类,因此您无需担心在两者之间做出选择。

是的,您需要执行其中任何一项

  1. 使用支持库来使用 getChildFragmentManager() 提供的对话框也来自支持库。
  2. 使用android.app库并将api级别更改为17。

此外,this link很有用