片段与片段活动的区别

我的问题是除了明显的遗传差异之外, FragmentFragmentActivity之间的主要区别是什么? 每个课程最适合哪种情况? 我想了解为什么这两个类都存在…

Fragment是一个Activity ,它有:

  • 它自己的生命周期
  • 收到自己的input事件
  • 可以在Activity运行时添加或删除。

Fragment必须始终embedded到Activity

HoneyComb(3.0)之前, Fragments不是API的一部分。 如果您希望在应用程序中使用Fragments ,并将其定位到HoneyComb之前的平台版本,则需要将支持包添加到您的项目中,并使用FragmentActivity来保存您的FragmentsFragmentActivity类具有用于处理Fragments的API,而在HoneyComb之前的Activity类没有。

如果您的项目只针对HoneyComb或更新,您应该使用Activity而不是FragmentActivity来保存您的Fragments

一些细节:

Activity使用android.app.Fragment 。 使用android.support.v4.app.FragmentFragmentActivity 。 不要将支持包Fragment添加到Activity因为这会导致抛出exception。

一个要小心的事情: FragmentManagerLoaderManager有单独的支持版本的FragmentActivity:

如果您在Activity中使用Fragment (HoneyComb或更高版本),请致电

  • getFragmentManager()获取android.app.FragmentManager
  • getLoaderManager()获取android.app.LoaderManager

如果您在FragmentActivity (Pre-HoneyComb)中使用Fragment ,请调用:

  • getSupportFragmentManager()获取android.support.v4.app.FragmentManager
  • getSupportLoaderManager()获取android.support.v4.app.LoaderManager

所以, 要这样做

 //don't do this myFragmentActivity.getLoaderManager(); //instead do this: myFragmentActivity.getSupportLoaderManager(); 

要么

 //don't do this: android.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager(); //instead do this: android.support.v4.app.FragmentManager fm = myFragmentActivity.getSupportFragmentManager() 

同样有用的是,虽然一个片段必须embedded到一个Activity但它不一定是Activity布局的一部分。 它可以用作活动的隐形工作者,而不需要自己的用户界面。

FragmentActivity是我们经典的支持片段的Activity,仅此而已。 因此,当片段将被附加到活动时,需要FragmentActivity。

Well Fragment是复制Activity的基本行为的好组件,仍然不是像Activity这样的独立应用程序组件,需要附加到Activity才能正常工作。

在这里寻找更多的细节

把FragmentActivity想象成一个可以支持碎片的常规Activity类。 在蜂窝之前,一个activity类不能直接使用Fragments,所以这在使用Fragments的活动中是需要的。

如果你的目标分布是Honeycomb,那么你可以扩展掉Activity。

另外一个片段被认为是一个“子活动”。 没有活动就不能存在。 总是把一个片段想象成一个子活动,你应该是好的。 所以活动将是父母和片段(s)孩子的象征关系。

FragmentActivity是一个包含Fragment的特别活动。 在这几句话中我已经解释了一个主要的重要变化,那就是用android 3.0(HoneyComb),android团队已经在android sdk中插入了。

有了这些新的概念,您的代码和布局变得更加灵活和可维护。 如果你在谷歌search有很多的例子。