详解Activity和FragmentActivity的区别

原文来自以StackOverflow,链接http://stackoverflow.com/questions/10609268/difference-between-fragment-and-fragmentactivity

 

FragmentActivity的一部分,它拥有:

l  自己的生命周期

l  响应自己的输入事件

l  可在Activity运行时加载或移除

 

Fragment的运行总是依附于Activity

HoneyComb版本以前并不提供FragmentAPI,如果你的app要在HoneyComb以前的版本中使用Fragment,你必须引入support package至你的项目,并且使用FragmentActivity来承载你的FragmentFragmentActivity类拥有相关的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中使用ActivityHoneyComb及以上版本),请使用:

getFragmentManager() 获取 android.app.FragmentManager

getLoaderManager() 获取 android.app.LoaderManager

l  如果你在FragmentActivity中使用ActivityHoneyComb版本以下),请使用:

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值