android.app.Fragment
和 android.support.v4.app.Fragment
的区别,以及在什么情况下应该使用它们?android.app.Fragment
和 android.support.v4.app.Fragment
的区别,以及在什么情况下应该使用它们?android.support.v4.app.Fragment
是Android支持库中的Fragment类,它是一个兼容包,可以让您在旧版本的Android上使用一些新功能。
android.app.Fragment
是原生Android SDK中的Fragment类。它是在Android 3(API 11)中引入的。
如果您想使应用程序使用片段,并且要针对API 11之前的设备,请使用android.support.v4.app.Fragment
。但是,如果您只针对运行API 11或更高版本的设备,则可以使用android.app.Fragment
。
编辑:自API级别28起,操作系统内置的android.app.Fragment
已弃用,每个人都应该转而使用支持库实现。
截至2018年:
从文档中可以看到,从android.app.Fragment
类开始被API级别28弃用:
现在应该使用支持库的
Fragment
,以确保在所有设备上具有一致的行为并获得生命周期的访问权限。
因此,现在应该在所有地方使用支持片段(android.support.v4.app.Fragment
),而不是原生片段(android.app.Fragment
)。
android.app.Fragment
类被弃用时,我期望 API 级别 28 会有一种可能是激进的替代方法。@Artyom,请问现在是否有一种前瞻性的方法,还是说使用向后兼容的 android.support.v4.app.Fragment
是正确的做法? - ergohack我一直在使用android.support.v4.app.Fragment
。
我编写的所有应用程序都需要支持到Android 2.3,这是实现它的最简单方法。
如果你支持11+版本,则坚持使用android.app.Fragment
。
如果您的应用程序针对API 11或更高版本,则可以使用android.app.Fragment
,这样您的APK文件将更小。
否则,请在项目中添加android.support.v4.app.Fragment
库以支持旧版Android API(Android 3.x)。
android.support.v4.app.Fragment
是一个库,您可以使用它来获得对老版本API的向后兼容性。
Fragment是在API 11级别上添加的(以及其他功能),您应该包括该库以将这些功能扩展到先前的API 11设备。这是一个有用的库,我建议看一下ActionBarSherlock,它可以将操作栏扩展到先前的API v11设备。