1. 程式人生 > >Android中關於Activity/ActionBarActivity/AppCompatActivity的區分與理解

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中會出現較大差異,需要區別對待。

相關推薦

Android關於Activity/ActionBarActivity/AppCompatActivity區分理解

        之前一直用Eclipse寫Android,最近換到了Android Studio,因為畢竟是Google推薦的,也是未來的大勢所趨,在使用過程中,遇到一些關於Activity的問題,下面來討論下。        先說Eclipse。先新建專案,其中Minimu

AndroidActivityAppCompatActivity理解

package com.chy.myapplication; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; /* * support v4 FragmentActivity 相容2.x模式下使用Fragm

AndroidActivityFragment之間資料相互傳遞

一、Activity啟動Activity Intent intent = new Intent(this,MainListActivity.class); startActivity(intent); Activity與Activity傳遞資料 I

Android內存泄露如何有效避免OOM總結

ignore create ui線程 nbsp weak solver 部分 ont 占用 一、關於OOM與內存泄露的概念 我們在Android開發過程中經常會遇到OOM的錯誤,這是因為我們在APP中沒有考慮dalvik虛擬機內存消耗的問題。 1

AndroidActivity被系統會收前頁面信息保存

prot 判斷 edi 1.5 protected 是否為空 信息保存 android and 1、重寫onSaveInstanceState方法 protected void onSaveInstanceState(Bundle outState) { super

Android 的一些特殊目錄文件

mtd 安裝文件 df -h card 端口號 car 路徑 文件中 name 用作命令的二進制文件位於/system/bin/與/system/xbin/下 應用數據位於/data/data/, 原始安裝文件位於/data/app/(Play商店中非免費應用位於/data

android常用的xml生成解析

總結了一下解析XML的三種方式。下圖為要解析的XML的格式。 解析了兩種方式的XML,一種是檔案,另一種是流。 程式碼中用到的許多的類是我虛構出來的,例如在第二種解析中用到的User類。使用者應該先寫這個類,寫出他們的屬性,並寫get和set方法才可以的。 <?xml

對於Android介面回撥機制的理解

對於介面回撥機制首先要弄明白的問題是為什麼需要它,也就是介面回撥能為我們解決什麼問題: 在開發過程中我們經常會遇到一些有關觸發執行的問題,比如使用者觸發按鈕,然後程式就執行了一系列的操作的比如註冊登入啊;問題的核心在於為什麼是出發了按鈕才執行,不觸發就不執行嗎? 這個時候就能體現出各

AndroidLooper的架構設計賞析

0.你將獲得什麼? 看完本篇文章,你將搞清楚以下所有的關於Handler相關的任何問題。如果你以後在面試中碰到Handler相關的問題,相信你會給面試官眼前一亮的感覺。 Handler整個訊息處理的架構是什麼樣的? 什麼是ThreadLocal?Looper?Messa

Androidactivity和xml的第一個專案

我們使用的手機不光是隻用到一個應用程式,比如在淘寶介面要付款的時候可能會啟動微信付款等,這就相當於在淘寶的Activity中啟動了微信的Activity。還比如說當我們註冊一個網站是,可能會給自己傳送一條簡訊作為驗證,這就是在當前的Activity中啟動了簡訊的Activity。之前對比的MVC設

AndroidSharedPreferences.Editor的apply()commit()方法

寫在前面   今天在寫 LifeTips App 時,涉及到儲存使用者調節的螢幕亮度時,使用了 SharedPreferences,及 SharedPreferences.Editor,結果 Android Studio 出現了”黃色的感嘆號“(本人有強迫症,不喜歡任何 warnin

androidActivity生命週期的詳細過程分析

android中Activity生命週期的詳細過程分析 Activity是安卓中相當重要的一個元件,理解它有利於我們後期更好的進行相關的開發,接下來我將演示一個demo來詳細講述Activity的生命週期過程。 首先寫兩個佈局檔案ks.xml和ks1.xml,用來實現兩個介面的跳轉,上面

AndroidActivity啟動過程探究

首先追溯到Activity的啟動,隨便啟動一個自己寫的demo專案,使用DDMS進行debug標記,然後在Debug中把主執行緒暫停,可以看到呼叫棧。如下圖所示: 於是我們先看android.app.ActivityThread的main()方法。 android.a

Android設定控制元件可見不可見

第一種    gone         表示不可見並且不佔用空間 第二種    visible       表示可見 第三種    invisible    表示不可見但是佔用空間 可見與不可見的表現形式有兩種。 在佈局檔案中: [html]view plaincopyprint? andr

AndroidActivity的啟動模式(LaunchMode)和使用場景

一、為什麼需要啟動模式 在Android開發中,我們都知道,在預設的情況下,如果我們啟動的是同一個Activity的話,系統會建立多個例項並把它們一一放入任務棧中。當我們點選返回(back)鍵,這些Activity例項又將從任務棧中一一移除,遵循的原則是“

AndroidActivity四種啟動模式和taskAffinity屬性詳解

在android應用開發中,打造良好的使用者體驗是非常重要的。而在使用者體驗中,介面的引導和跳轉是值得深入研究的重要內容。在開發中,與介面跳轉聯絡比較緊密的概念是Task(任務)和Back Stack(回退棧)。activity的啟動模式會影響Task和Back Stack

AndroidActivity之間引數傳遞

Intent:一直穿梭在Activity之間,它不光只是為了使Activity之間進行跳轉。在跳轉的時候,還可以進行Acivity之間的引數傳遞。 下面舉幾個列子。以MianActivity,TheActivity為例子。     MianActivity類     In

Android activity實現全屏無標題欄透明

1.在xml檔案中進行配置 在專案的清單檔案AndroidManifest.xml中,在對應Activity進行如下配置即可。 2.編寫程式碼設定 在對應activity的onCreate()方法中加入如下程式碼即可 實現全屏效果: getWindow().set

Androiddex檔案的載入優化流程

目錄 1、dex檔案分析 邏輯上,可以把dex檔案分成3個區,標頭檔案、索引區和資料區。索引區的ids字尾為identifiers的縮寫。 header dex檔案裡的header。除了描述.dex檔案的檔案資訊外,還有檔案裡其他各個區域的索引。 (

AndroidActivity觸控事件傳遞原始碼學習

Activity中的觸控事件傳遞對應兩個方法:dispatchTouchEvent和onTouchEvent。分別是分發和消費。 先來看分發。 /** * Called to process touch screen events. You