FragmentActivity和ActionBarActivity的由来

参考资料:

http://www.open-open.com/lib/view/open1373981182669.html

http://www.cnblogs.com/yc-755909659/p/4290784.html

http://www.bdqn.cn/news/201308/10625.shtml

http://www.cnblogs.com/wanqieddy/p/3818718.html

http://09572.iteye.com/blog/1587044

http://www.cnblogs.com/mainroadlee/p/3366323.html

 

 Android 3.0引入了Fragment和ActionBar两大组件。

 

Fragment

为了在低版本中使用fragment就要用到android-support-v4.jar兼容包,而fragmentActivity就是这个兼容包里面的,它提供了操作fragment的一些方法,其功能跟3.0及以后的版本的Activity的功能一样。

1、fragmentactivity 继承自activity,用来解决android3.0 之前没有fragment的api,所以在使用的时候需要导入support包,同时继承fragmentActivity,这样在activity中就能嵌入fragment来实现你想要的布局效果。 
2、当然3.0之后你就可以直接继承自Activity,并且在其中嵌入使用fragment了。 
3、获得Manager的方式也不同 
3.0以下:getSupportFragmentManager() 
3.0以上:getFragmentManager() 

 

ActionBar

同样如果你只需要在Android 3.0以上系统中开发含有Action Bar的应用(minSdkVersion>=11),那么直接在Activity中调用ActionBar API (也就是android.app.ActionBar)就可以了。而如果需要兼容Android 2.1~3.0之间的系统,你就必须使用ActionBarCompat (在建立工程的时候,就必须将Support Library r18包[android.support.v4.jar 和android.support.v7.jar]含至编译路径,而且要使用ActionBarActivity 而不是Activity),此时调用ActionBar API的时候 ActionBar其实来自于android.support.v7.app.ActionBar(ActionBarCompat)。

所以说FragmentActivity和ActionBarActivity都是为了兼容Android 3.0之前的系统而从Activity继承而来,使得之前的系统也可以使用这两大组件。

那么2.X版本使用ActionBar得用ActionBarSherlock或者添加android-support-v7-appcompat库,Activity要继承SherlockActivity或ActionBarActivity,使用Fragment得添加android-support-v4库,Activity要继承FragmentActivity,如果在低版本同时兼容ActionBar和Fragment,在同一个Activity里,可以使用V4的fragmentActivity和V7的ActionBar(ActionBarCompat)来达到这个目的。

原文地址:https://www.cnblogs.com/8dull/p/5383008.html