之前一直用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中会出现较大差异,需要区别对待。
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!