嗯,标题就很清楚了,Fragment 和 FragmentActivity 有什么区别呢?
我想知道以下情况的最佳选择是什么:我有两个片段和一个主要活动(带有 NavigationView),其中一个片段或另一个片段将被加载(现在不是同时)。
我还考虑过使用 ViewPager 来管理片段,它以一种相当简单的方式使用,如果我旋转屏幕并且我不必自己控制它,它会保存数据,但问题是它加载同时两个片段。活动的开始(或者我认为),还允许您通过来回滑动手指来更改片段。
嗯,标题就很清楚了,Fragment 和 FragmentActivity 有什么区别呢?
我想知道以下情况的最佳选择是什么:我有两个片段和一个主要活动(带有 NavigationView),其中一个片段或另一个片段将被加载(现在不是同时)。
我还考虑过使用 ViewPager 来管理片段,它以一种相当简单的方式使用,如果我旋转屏幕并且我不必自己控制它,它会保存数据,但问题是它加载同时两个片段。活动的开始(或者我认为),还允许您通过来回滑动手指来更改片段。
Fragment作为一个Activity包含了自己的 Lifecycle 并代表了一个行为或者一个Activity中的用户界面的一部分,最重要的是它可以从包含它的 Activity 中添加或移除,它总是附加到一个Activity中这是工作所必需的。
FragmentActivity是一个包含对 Fragment 的支持的Activity,它使我们可以在其中进行 Fragment 事务,即添加或删除。
FragmentActivity和Fragment的主要区别在于Fragment 是一个组件,它在Activity中呈现一个行为或一个用户界面,但它需要一个Activity来显示自己;正如我们所知,FragmentActivity是一个Activity,但它包含对 Fragment 的支持,因此我们可以向它添加一个 Fragment。
Activity
这将是 a和 a的生命周期之间的区别Fragment
:在 SO 网站上有一个英文答案,由@MrK回答,指的是您的问题:“Fragment 和 FragmentActivity 之间的差异”
Fragment是 Activity 的一部分,它具有:
在 HoneyComb (Android 3.0) 之前,片段不是 API 的一部分。如果您想在针对 HoneyComb 之前的平台版本的应用程序中使用 Fragments,您必须将支持包添加到您的项目中并使用FragmentActivity来存储您的 Fragment。
该类
FragmentActivity
有一个处理片段的 API,而 Android 3.0 之前的Activity类没有。https://stackoverflow.com/a/10609839/250260
显然在概念层面上存在差异,但在功能上却没有。
FragmentActivity
在Android之前的版本中是工作的,当你使用android.app.Fragment
and不产生兼容性异常时,FragmentActivity
使用它,而如果你使用它android.support.v4.app.Fragment
对应occupenceFragment
,两者是相同的,它们的功能是相同的,只是名字稍有变化,在FragmentActivity
函数中getLoaderManager()
,getFragmentManager()
它们分别变为getSupportLoaderManager()
和getSupportFragmentManager()
。但两者仍然是其中subclase
之一Activity
我在@MrK回答的英文 StackOverflow 论坛中发现了一个类似的问题,我认为这个问题解释得很好,并且有相当多的赞成票,所以我决定翻译它,因为它符合你的要求。
翻译:
A
Fragment
是 a 的一部分Activity
,它具有:Activity
。A
Fragment
必须始终嵌入在 a 中Activity
。Fragments
在 HoneyComb (3.0) 之前,它们不是 API 的一部分。如果您想Fragments
在 HoneyComb 之前针对平台版本的应用程序中使用,您必须将Support Package添加到您的项目中并用于FragmentActivity
保存您的Fragments
. 该类FragmentActivity
有一个 API 来处理Fragments
,而Activity
在 HoneyComb 之前的类没有。如果您的项目仅针对 HoneyComb 或更新版本,您应该使用
Activity
而不是FragmentActivity
嵌入您的Fragments
.一些细节:
android.app.Fragment
与 一起使用Activity
。android.support.v4.app.Fragment
与 一起使用FragmentActivity
。不要将支持包添加Fragment
到Activity
,因为这会导致抛出异常。需要注意的一件事:
FragmentManager
他们LoaderManager
为 FragmentActivity 提供了单独的支持版本:如果您一次使用一个
Fragment
(Activity
HoneyComb 及更高版本),请致电:getFragmentManager()
要得到android.app.FragmentManager
getLoaderManager()
要得到android.app.LoaderManager
如果您正在使用 a
Fragment
in aFragmentActivity
(pre-HoneyComb),请致电:getSupportFragmentManager()
得到android.support.v4.app.FragmentManager
.getSupportLoaderManager()
要得到android.support.v4.app.LoaderManager
所以 不要做
任何一个
知道片段必须嵌入到
Activity
布局中也很有用,但它不一定是布局的一部分Activity
。它可以用作活动的隐形工作者,没有自己的 UI。A
FragmentActivity
是Activity
可以承受Fragments
的。然而,一个
Fragment
企业总是要依靠一个企业Activity
。你可以说它就像Activity
.