Android中关于Activity/ActionBarActivity/AppCompatActivity的区分与理解

版权声明:本文为博主原创文章,欢迎分享到其它技术社区,分享请标明出处: https://blog.csdn.net/CHENYUFENG1991/article/details/46858249

        之前一直用Eclipse写Android,最近换到了Android Studio,因为毕竟是Google推荐的,也是未来的大势所趋,在使用过程中,遇到一些关于Activity的问题,下面来讨论下。

        先说Eclipse。先新建项目,其中Minimum Required  SDK 选择API14 :Android 4.0,(Icecream Sandwich),Target SDK和Compile With选择API19:Android 4.4(KitKat),新建完成后,MainActivity 自动继承自Activity。以下是程序运行后的截图:

可以发现,在主界面顶端会出现ActionBar,显示当前Activity的名称AndroidTest。这是Eclipse的情况,下面看一下Android Studio中的情况。

        在Android Studio中先新建一个Project,Application name为AndroidTest,然后在platform和SDK中选择Phone And Tablet.Minimum SDK选择API 14:Android 4.0(IceCreamSandwich),新建完成后,自动会在Project中新建一个Module,名称为app.此时可以发现MainActivity是默认继承自ActionBarActivity.并且在ActionBarActivity上有一条删除线,表现该ActionBarActivity已经过时了,查看提示会发现:“android.support.v7.app.ActionBarActivity is deprecated”.表示已经是过时的了,或者说是不推荐使用了。以下是程序运行后的截图:。可以发现在顶端还是会出现ActionBar,默认显示项目名称AndroidTest.与Eclipse中的项目没有任何区别,只是MainActivity继承的父类分别是Activity和ActionBarActivity而已。

        由于Android开发中一个Class的过时总会让人不爽,下面将AS中继承的ActionBarActivity手动改成Activity.并导入对应的包,程序运行后的截图如下所示:。可以发现顶端的ActionBar不见了。这就和Eclipse中完全不同了。同样是继承自Activity,界面UI却不同。这也是Eclipse和AS开发Android项目的区别之一。

      如果要在AS中也使用ActionBar,并且不使用已经的过时的ActionBarActivity,有什么办法呢?就是使用AppCompatActivity.在AS中把MainActivity继承自AppCompatActivity,并导入对应的包,程序运行后截图:。可以发现我们可爱的ActionBar又出现了。并且AppCompatActivity并没有过时。

       以后在我们的项目中,可以通过手动修改Activity的继承父类,来决定是否显示ActionBar。并且对程序没有其他影响。同样的代码在Eclipseh和Android Studio中会出现较大差异,需要区别对待。



展开阅读全文

没有更多推荐了,返回首页