Activity 和 FragmentActivity 的区别

Posted

技术标签:

【中文标题】Activity 和 FragmentActivity 的区别【英文标题】:Difference between Activity and FragmentActivity 【发布时间】:2012-05-15 17:16:33 【问题描述】:

我在处理片段时遇到了两个被多次使用的东西ActivityFragmentActivity。我想知道这两者之间有什么区别,因为当我将Activity 更改为FragmentActivity 时,它对应用程序没有影响。

【问题讨论】:

【参考方案1】:

FragmentActivity 是为android Support Package 构建的Activity 的子类。

FragmentActivity 类添加了几个新方法以确保与旧版本的 Android 兼容,但除此之外,两者之间并没有太大区别。只需确保将所有对getLoaderManager()getFragmentManager() 的调用分别更改为getSupportLoaderManager()getSupportFragmentManager()

【讨论】:

嘿,我没有更改对 getSupportLoaderManager() 和 getSupportFragmentManager() 的调用......但它仍然工作正常。 这就是它如此危险的原因:P。 FragmentActivityActivity 继承 getLoaderManagergetFragmentManager 方法,因此编译器不会抱怨。您也有可能导入了不正确的 LoaderManagerFragmentManager 类。确保您从支持包 (android.support.v4.app) 导入这些类,不是 Android SDK (android.app)。 我们能不能说,如果我们想在android 2.x版本中使用fragment,我们需要使用FragmentActivity,而对于支持fragment的版本,我们需要使用Activity。 我觉得你说的是对的。但为了 100% 清楚......如果您使用的是 android.app.Fragment,请使用 Activity;如果您使用的是android.support.v4.app.Fragment,请使用FragmentActivity。永远不要将android.support.v4.app.Fragment 附加到android.app.Activity,因为这会导致抛出异常。 首先尝试this tutorial(如何在应用程序中使用Fragments)。然后,继续访问this tutorial(如何使用支持包中的Fragments)。开发者网站上的documentation 也值得一读。【参考方案2】:

FragmentActivity 是support library 的一部分,而Activity 是框架的默认类。它们在功能上是等效的。

您应该始终使用FragmentActivityandroid.support.v4.app.Fragment 而不是平台默认的Activityandroid.app.Fragment 类。使用平台默认值意味着您依赖于您正在运行的设备中使用的任何片段实现。这些通常已有多年历史,并且包含已在支持库中修复的错误。

【讨论】:

注意:支持库的minSdkVersion自26.x.x版本起为14。

以上是关于Activity 和 FragmentActivity 的区别的主要内容,如果未能解决你的问题,请参考以下文章

Android——Activity和Intent及Activity的生命周期

Activity 的介绍和使用

appcompatactivity和activity的区别

Activity的launchMode和任务栈小结

转载Android开发中巧用Activity和Fragment

关于fragment和activity