編輯:Android開發實例
一、什麼是Intent?
Intent的中文意思是目的。在Android中也是“目的”的意思。就是我們要去哪裡,從這個activity要前往另一個Activity就需要用到Intent。
示例代碼一:
1: //定義一個Intent
2: Intent intent = new Intent(IntentDemo.this, AnotherActivity2.class);
3: //啟動Activity
4: startActivity(intent);
以上示例代碼的作用是從IntentDemo這個activity切換到AnotherActivity2。這是Intent其中一種構造方法,指定兩個Activity。為什麼需要指定兩個活動呢?因為在Android中有一個活動棧,這樣的構造方式才能確保正確的將前一個活動壓入棧中,才能在觸發返回鍵的時候活動能夠正確出棧。
注意:所有的Activity都必須先在AndroidManifest.xml裡面配置聲明。一下為本文用到的程序配置文件
1: <?xml version="1.0" encoding="utf-8"?>
2: <manifest xmlns:android="http://schemas.android.com/apk/res/android"
3: package="com.halzhang.android.intent" android:versionCode="1"
4: android:versionName="1.0">
5: <application android:icon="@drawable/icon" android:label="@string/app_name">
6: <activity android:name=".IntentDemo" android:label="@string/app_name">
7: <intent-filter>
8: <action android:name="android.intent.action.MAIN" />
9: <category android:name="android.intent.category.LAUNCHER" />
10: </intent-filter>
11: </activity>
12: <activity android:name=".AnotherActivity" android:label="another">
13: <intent-filter>
14: <action android:name="android.intent.action.EDIT" />
15: <!-- category一定要配置,否則報錯:找不到Activity -->
16: <category android:name="android.intent.category.DEFAULT" />
17: </intent-filter>
18: </activity>
19:
20: <activity android:name=".AnotherActivity2" android:label="another2">
21: <intent-filter>
22: <action android:name="android.intent.action.EDIT" />
23: <category android:name="android.intent.category.DEFAULT" />
24: </intent-filter>
25: </activity>
26: </application>
27: <uses-sdk android:minSdkVersion="3" />
28: <!--
29: 上面配置的兩個activity具有相同的action類型,都為“android.intent.action.EDIT”
30: 當Intent的action屬性為Intent.ACTION_EDIT時,系統不知道轉向哪個Activity時,
31: 就會彈出一個Dialog列出所有action為“android.intent.action.EDIT”的
32: Activity供用戶選擇
33: -->
34: </manifest>
二、Intent的構造函數
公共構造函數:
1、Intent() 空構造函數
2、Intent(Intent o) 拷貝構造函數
3、Intent(String action) 指定action類型的構造函數
4、Intent(String action, Uri uri) 指定Action類型和Uri的構造函數,URI主要是結合程序之間的數據共享ContentProvider
5、Intent(Context packageContext, Class<?> cls) 傳入組件的構造函數,也就是上文提到的
6、Intent(String action, Uri uri, Context packageContext, Class<?> cls) 前兩種結合體
Intent有六種構造函數,3、4、5是最常用的,並不是其他沒用!
Intent(String action, Uri uri) 的action就是對應在AndroidMainfest.xml中的action節點的name屬性值。在Intent類中定義了很多的Action和Category常量。
示例代碼二:
1: Intent intent = new Intent(Intent.ACTION_EDIT, null);
2: startActivity(intent);
示例代碼二是用了第四種構造函數,只是uri參數為null。執行此代碼的時候,系統就會在程序主配置文件AndroidMainfest.xml中尋找
<action android:name="android.intent.action.EDIT" />對應的Activity,如果對應為多個activity具有<action android:name="android.intent.action.EDIT" />此時就會彈出一個dailog選擇Activity,如下圖:
如果是用示例代碼一那種方式進行發送則不會有這種情況。
三、利用Intent在Activity之間傳遞數據
在Main中執行如下代碼:
1: Bundle bundle = new Bundle();
2: bundle.putStringArray("NAMEARR", nameArr);
3: Intent intent = new Intent(Main.this, CountList.class);
4: intent.putExtras(bundle);
5: startActivity(intent);
在CountList中,代碼如下:
1: Bundle bundle = this.getIntent().getExtras();
2: String[] arrName = bundle.getStringArray("NAMEARR");
以上代碼就實現了Activity之間的數據傳遞!
轉自:http://www.cnblogs.com/halzhang/archive/2010/05/28/1746592.html
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
Android應用程序可以在許多不同地區的許多設備上運行。為了使應用程序更具交互性,應用程序應該處理以適合應用程序將要使用的語言環境方面的文字,數字,文件等。在本章中,我
單例模式定義: Ensure a class has only one instance, and provide a global point of acces