在Android系统中,应用程序一般都有多个Activity,Intent可以实现不同Activity之间的切换和数据传递。启动Activity方式有以下两种方式:
·显式启动,必须在Intent中指明启动的Activity所在的类。
·隐式启动,Android系统根据Intent的动作和数据来决定启动哪一个Activity,即在隐式启动时,Intent中只包含需要执行的动作和所包含的数据,而无须指明具体启动哪一个Activity,选择权由Android系统和终用户来决定。
如何使用Intent显式启动Activity?使用Intent显式启动Activity,首先需要创建一个Intent,指定当前的应用程序上下文及要启动的Activity,并把创建好的Intent作为参数传递给startActivity()方法。代码如代码清单1所示。
代码清单1 显式启动
Intent intent = new Intent(IntentDemo.this, Activity2.class);
startActivity(intent);
以下将通过一个IntentDemo示例来详细讲解如何使用Intent显式启动新的Activity。
IntentDemo示例中包含IntentDemo和Activity2这两个Activity类,程序启动是默认启动IntentDemo这个Activity,启动画面如图1所示。
在图1的界面中,单击“跳转到Activity2”按钮后,程序启动Activity2这个Activity,界面如图2所示。

图1 名为IntentDemo的Activity界面 图2 名为Activity2的Activity界面
为使程序达到上述效果,首先,在AndroidManifest.xml文件中注册上面两个Activity,应使用<activity>标签,嵌套在<application>标签内部。代码如代码清单2所示。
代码清单2 AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="//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应用程序中,用户使用的每个组件都必须在AndroidManifest.xml文件中的<application>节点内定义,所以<application>节点下共有两个<activity>节点,分别代表应用程序中所使用的两个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);
}
});
在单击事件的处理函数中,Intent构造函数的第1个参数是应用程序上下文,应用程序上下文是IntentDemo;第2个参数是接收Intent的目标组件,使用的是显式启动方式,直接指明了需要启动的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);
}
});