Android中關於Activity/ActionBarActivity/AppCompatActivity的區分與理解

        之前一直用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  。歡迎大家訪問!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章