android學習筆記(一)activity的基本用法和創建,bundle如何傳遞數據,intent的用法

一,activity

activity在android中相當於php中的一個html頁面,只要處於這個頁面,就代表這個activity處於活動狀態,用戶在這個界面上所做的任何操作都是針對這個activity來說的,activity從oncreate開始後存在,直到調用ondestroy後結束其生命週期,當Activity的處於後臺不可操作活出與前臺但無法進行互動時,此時的Activity處於暫停狀態,但依然在程序中存在,並沒有被釋放掉,當Activity處於前臺和用戶進行交互時,此時Activity處於激活態,即當前的活動頁面,當Activity被另一個頁面完全覆蓋後,就處於停止狀態,此時通常系統會自動調用函數將其殺死,這就是Activity的三種基本狀態,下面來說一下怎麼創建Activity

對於android來說創建一個activity有兩種方式,

第一種是手工添加,需要完成3個步驟,

1.首先是創建一個類,類繼承自android.app.activity,如下圖,需要填寫的爲name也就是類名,和superclass這一項,這一項填寫android.app.activity即可,其他默認即可


2.在res/Layout下創建一個xml文件,文件名稱最好與創建的類名關聯,方便以後修改,這裏取名叫Activity_Thrid


之後需要對其進行修改與之前的新建Activity關聯上

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.helloandroid.ThridActivity" >

3.在入口程序中註冊


在三個步驟完成後,也就代表一個Activity註冊完成了。

第二種是自動添加:

選擇New-other在彈出的對話框中選擇AndroidActivity後,就會有系統自動完成所有內容的添加

二.intent

intent 的中文翻譯爲意圖,也就是打算幹什麼的意思,在Android中的實際運用也就是打算幹什麼,intent分爲隱式意圖和顯式意圖,區分這兩個很容易,打個比方說,怪盜kid去偷美術品的時候都會寄一張預告函,告訴主人,我將於XX點於XX地點偷取XX,這個就是顯式意圖,普通小偷偷東西並不會事先通知你任何事,而都是在私下裏進行的,這個就是隱式意圖,兩者的區別就在於會不會事先設置好應該傳遞給那些組件,下面就來介紹一下顯式意圖和隱式意圖兩種不同方式的傳遞過程

1.顯式意圖,顯式意圖會實現通過設定好傳遞的地點

Intent intent=new Intent(MainActivity.this, SecondActivity.class);//定義意圖

或者 Intent intent=new Intent()

intent.setClass(MainActivity.this, SecondActivity.class);

或者

Intent intent=new Intent()
ComponentName com=new ComponentName(MainActivity.this, SecondActivity.class);
intent.setComponent(com);

三種方式來定義顯式意圖,可以很明顯的看出,每種方式都有明顯的指出起始Activity和需要送達的activity,這樣明確指出需要送達地點的意圖就是顯式意圖


2.隱式意圖,就是指不指出需要送達地點的意圖,那麼android是怎麼來傳輸這種意圖了,一般情況都是根據xml中設置的action,data和Category來自發決定要往哪裏發送

也就是需要在AndroidManifest.xml裏面事先設置後activity的action,data以及Category,具體的設置可以參考下面的代碼:

    <activity
            android:name=".ThridActivity"
            android:label="Thrid Activity label" >
              <intent-filter>  
               <!-- 自定義的動作 -->  
               <action android:name="com.example.helloandroid.ThridActivity" />  
               <!-- 附加信息 -->  
               <category android:name="android.intent.category.DEFAULT" />  
           </intent-filter>  
        </activity>

註冊後,就需要對意圖的action和category進行設置,如下代碼,這樣android就會在運行時自動根據action和category進行匹配,如果匹配結果只有一項則直接開始運行,如有多項會打開一個選擇列供用戶進行篩選,

                     Intent intent=new Intent();//定義意圖
       intent.setAction("com.example.helloandroid.ThridActivity");
       intent.addCategory("android.intent.category.DEFAULT");  

3.bundle的使用

bundle的作用在android中是用來傳遞數據的,通常的載體爲意圖,也就是說bundle可以承載在意圖中將數值傳到目標組件處使用

                        Bundle bundle = new Bundle();
bundle.putString("name", "thridbutton");
intent.putExtras(bundle);

如上代碼,向bundle中壓入數據後,將bundle放入意圖中

之後再目標組件處提取bundle中的數據即可

           Bundle bundle=this.getIntent().getExtras();//獲取bundle數據
String str=bundle.getString("name");


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