android.app.Fragment和android.support.v4.app.Fragment之间的区别

ray*_*ray 173 android android-fragments

android.app.Fragment和之间有什么区别android.support.v4.app.Fragment?每种情况应该使用什么?

Rag*_*ood 288

android.support.v4.app.Fragment是Android支持库中的Fragment类,它是一个兼容包,允许您在旧版本的Android上使用Android的一些较新功能.

android.app.Fragment是Android SDK原生版本中的Fragment类.它是在Android 3(API 11)中引入的.

如果您想让您的应用使用片段,并希望在API 11之前定位设备,则必须使用android.support.v4.app.Fragment.但是,如果您只定位运行API 11或更高版本的设备,则可以使用android.app.Fragment.

编辑:android.app.Fragment 现在不推荐使用 OS (从API级别28开始),每个人都应该转向使用支持库实现.

  • 另请参阅"使用FragmentStatePagerAdapter WITHOUT支持库":http://stackoverflow.com/questions/18512294/using-fragmentstatepageradapter-without-support-library (4认同)
  • 将使用Androidx:androidx.fragment.app.Fragment (3认同)

Art*_*yom 56

截至2018年:

来自android.app.Fragment 文档:

此类在API级别28中已弃用.
使用支持库Fragment可在所有设备上实现一致的行为并访问Lifecycle.

因此,支持fragment(android.support.v4.app.Fragment)应该在任何地方使用,而不是android.app.Fragment现在使用本机片段().

  • 这应该是当今公认的答案 (2认同)

ale*_*lex 12

我只使用android.support.v4.app.Fragment.

我写的所有应用程序都需要支持Android 2.3,这是最简单的方法.

如果你支持11+然后坚持android.app.Fragment.

  • 在这种情况下,您错过了支持库中存在的许多功能,但仅限于某个API级别之后的本机功能.例如,getChildFragmentManager()在17级之前不可用.我的建议是仅使用支持片段并假装本机片段不存在. (17认同)