Activity 和 FragmentActivity 的区别
Posted
技术标签:
【中文标题】Activity 和 FragmentActivity 的区别【英文标题】:Difference between Activity and FragmentActivity 【发布时间】:2012-05-15 17:16:33 【问题描述】:我在处理片段时遇到了两个被多次使用的东西Activity
和FragmentActivity
。我想知道这两者之间有什么区别,因为当我将Activity
更改为FragmentActivity
时,它对应用程序没有影响。
【问题讨论】:
【参考方案1】:FragmentActivity
是为android Support Package 构建的Activity
的子类。
FragmentActivity
类添加了几个新方法以确保与旧版本的 Android 兼容,但除此之外,两者之间并没有太大区别。只需确保将所有对getLoaderManager()
和getFragmentManager()
的调用分别更改为getSupportLoaderManager()
和getSupportFragmentManager()
。
【讨论】:
嘿,我没有更改对 getSupportLoaderManager() 和 getSupportFragmentManager() 的调用......但它仍然工作正常。 这就是它如此危险的原因:P。FragmentActivity
从 Activity
继承 getLoaderManager
和 getFragmentManager
方法,因此编译器不会抱怨。您也有可能导入了不正确的 LoaderManager
和 FragmentManager
类。确保您从支持包 (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(如何使用支持包中的Fragment
s)。开发者网站上的documentation 也值得一读。【参考方案2】:
FragmentActivity
是support library 的一部分,而Activity
是框架的默认类。它们在功能上是等效的。
您应该始终使用FragmentActivity
和android.support.v4.app.Fragment
而不是平台默认的Activity
和android.app.Fragment
类。使用平台默认值意味着您依赖于您正在运行的设备中使用的任何片段实现。这些通常已有多年历史,并且包含已在支持库中修复的错误。
【讨论】:
注意:支持库的minSdkVersion
自26.x.x版本起为14。以上是关于Activity 和 FragmentActivity 的区别的主要内容,如果未能解决你的问题,请参考以下文章
Android——Activity和Intent及Activity的生命周期