在Android系統(tǒng)中,應(yīng)用程序一般都有多個Activity,Intent可以實現(xiàn)不同Activity之間的切換和數(shù)據(jù)傳遞。啟動Activity方式有以下兩種方式:
·顯式啟動,必須在Intent中指明啟動的Activity所在的類。
·隱式啟動,Android系統(tǒng)根據(jù)Intent的動作和數(shù)據(jù)來決定啟動哪一個Activity,即在隱式啟動時,Intent中只包含需要執(zhí)行的動作和所包含的數(shù)據(jù),而無須指明具體啟動哪一個Activity,選擇權(quán)由Android系統(tǒng)和終用戶來決定。
如何使用Intent顯式啟動Activity?使用Intent顯式啟動Activity,首先需要創(chuàng)建一個Intent,指定當(dāng)前的應(yīng)用程序上下文及要啟動的Activity,并把創(chuàng)建好的Intent作為參數(shù)傳遞給startActivity()方法。代碼如代碼清單1所示。
代碼清單1 顯式啟動
Intent intent = new Intent(IntentDemo.this, Activity2.class);
startActivity(intent);
以下將通過一個IntentDemo示例來詳細(xì)講解如何使用Intent顯式啟動新的Activity。
IntentDemo示例中包含IntentDemo和Activity2這兩個Activity類,程序啟動是默認(rèn)啟動IntentDemo這個Activity,啟動畫面如圖1所示。
在圖1的界面中,單擊“跳轉(zhuǎn)到Activity2”按鈕后,程序啟動Activity2這個Activity,界面如圖2所示。

圖1 名為IntentDemo的Activity界面 圖2 名為Activity2的Activity界面
為使程序達(dá)到上述效果,首先,在AndroidManifest.xml文件中注冊上面兩個Activity,應(yīng)使用<activity>標(biāo)簽,嵌套在<application>標(biāo)簽內(nèi)部。代碼如代碼清單2所示。
代碼清單2 AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.IntentDemo"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".IntentDemo"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Activity2"
android:label="@string/app_name">
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>
在Android應(yīng)用程序中,用戶使用的每個組件都必須在AndroidManifest.xml文件中的<application>節(jié)點內(nèi)定義,所以<application>節(jié)點下共有兩個<activity>節(jié)點,分別代表應(yīng)用程序中所使用的兩個Activity:IntentDemo和Activity2。
在IntentDemo.java文件中,包含了顯示使用Intent啟動Activity2的核心代碼,如代碼清單3所示。
代碼清單3 IntentDemo.java
Button button = (Button)findViewById(R.id.btn);
button.setOnClickListener(new OnClickListener(){
public void onClick(View view){
Intent intent = new Intent(IntentDemo.this, Activity2.class);
startActivity(intent);
}
});
在單擊事件的處理函數(shù)中,Intent構(gòu)造函數(shù)的第1個參數(shù)是應(yīng)用程序上下文,應(yīng)用程序上下文是IntentDemo;第2個參數(shù)是接收Intent的目標(biāo)組件,使用的是顯式啟動方式,直接指明了需要啟動的Activity。
同理,在Activity2.java文件中,包含了顯示使用Intent啟動IntentDemo的核心代碼,如代碼清單4所示。
代碼清單4 Activity2.java
Button button = (Button)findViewById(R.id.btn);
button2.setOnClickListener(new OnClickListener(){
public void onClick(View view){
Intent intent = new Intent(Activity2.this, IntentDemo.class);
startActivity(intent);
}
});