原文来自以StackOverflow,链接http://stackoverflow.com/questions/10609268/difference-between-fragment-and-fragmentactivity
Fragment是Activity的一部分,它拥有:
l 自己的生命周期
l 响应自己的输入事件
l 可在Activity运行时加载或移除
Fragment的运行总是依附于Activity。
在HoneyComb版本以前并不提供Fragment的API,如果你的app要在HoneyComb以前的版本中使用Fragment,你必须引入support package至你的项目,并且使用FragmentActivity来承载你的Fragment。FragmentActivity类拥有相关的API来处理Fragment,这是HoneyComb版本以前的Activity所不具备的。
如果你的app运行在HoneyComb或以上的版本,你应该使用Activity而不是FragmentActivity来承载你的Fragment。
细节方面:
l 在Activity中使用android.app.Fragment
l 在FragmentActivity中使用android.support.v4.app.Fragment
l 不要向Activity中添加support package,不然将会抛出异常
有一件事需要注意:FragmentManager 和 LoaderManager 对FragmentActivity有不同的支持版本:
l 如果你在Fragment中使用Activity(HoneyComb及以上版本),请使用:
getFragmentManager() 获取 android.app.FragmentManager
getLoaderManager() 获取 android.app.LoaderManager
l 如果你在FragmentActivity中使用Activity(HoneyComb版本以下),请使用:
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()
最后有用的一点你必须知道:虽然fragment必须依附于Activity,但并不必成为Activity布局中的一部分。它可以在activity中不可见,也可以没有自己的UI。