其实Activity就是一个窗口容器,创建好了Activity后,咱们就可以向其中放入各种各样的控件,这样一个最简单的Android应用程序就完成了。但是,对于绝大多数Android程序来说都不会只有一个Activity,新的问题就来了。怎么从一个Activity跳转到另一个Activity,并且将一些信息传递给它呢?这就用到了下面咱们要学习的对象——Intent。
Intent对象的作用是协助应用间的交互与通讯,Intent负责对Activity中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给调用的组件,并完成组件的调用。Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。
Intent对象的属性:
(1)Action,也就是要执行的动作,SDk中定义了一些标准的动作,包括 ACTION_CALL (启动打电话的Acvivity)、ACTION_SENDTO(启动发短信的Activity)等。当然,也可以自定义动作,并可定义相应的Activity来处理我们的自定义动作。
(2)Data,也就是执行动作要操作的数据Android中采用指向数据的一个URI来表示,如在联系人应用中,一个指向某联系人的URI可能为:content://contacts/1。对于不同的动作,其URI数据的类型是不同的(可以设置type属性指定特定类型数据),如ACTION_EDIT指定Data为文件URI,打电话为tel:URI,访问网络为http:URI,而由content provider提供的数据则为content: URIs。
(3)type(数据类型),显式指定Intent的数据类型(MIME)。一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。
(4)category(类别),被执行动作的附加信息。例如 LAUNCHER_CATEGORY 表示Intent 的接受者应该在Launcher中作为顶级应用出现;而ALTERNATIVE_CATEGORY表示当前的Intent是一系列的可选动作中的一个,这些动作可以在同一块数据上执行。
(5)component(组件),指定Intent的的目标组件的类名称。通常 Android会根据Intent 中包含的其它属性的信息,比如action、data/type、category进行查找,最终找到一个与之匹配的目标组件。但是,如果 component这个属性有指定的话,将直接使用它指定的组件,而不再执行上述查找过程。指定了这个属性以后,Intent的其它所有属性都是可选的。
(6)extras(附加信息),是其它所有附加信息的集合。使用extras可以为组件提供扩展信息,比如,如果要执行"发送电子邮件"这个动作,可以将电子邮件的标题、正文等保存在extras里,传给电子邮件发送组件。
下面是一个简单的使用Intent对象实现一个Activity跳转到另一个Activity的例子:
首先看一下工程文件列表

第一个Activity文件代码
package com.pj;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
/**
* @file : Activity1.java
* @author : duanpj
* @date : Jan 18, 2011 11:11:52 PM
* @version : 1.0
* @descriptions :
*/
public class Activity1 extends Activity {
private EditText text1=null;
private EditText text2=null;
private Button button1=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
text1=(EditText)findViewById(R.id.act1_text1);
text2=(EditText)findViewById(R.id.act1_text2);
button1=(Button)findViewById(R.id.act1_button1);
button1.setOnClickListener(new MyButtonListener() );
}
class MyButtonListener implements OnClickListener{
public void onClick(View v) {
int num1=Integer.parseInt(text1.getText().toString());
int num2=Integer.parseInt(text2.getText().toString());
Intent intent=new Intent();
intent.putExtra("value", (num1+num2)+"");
intent.setClass(Activity1.this,Activity2.class);
Activity1.this.startActivity(intent);
}
}
}
第二个Activity文件代码
package com.pj;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
/**
* @file : Activity2.java
* @author : duanpj
* @date : Jan 18, 2011 11:12:44 PM
* @version : 1.0
* @descriptions :
*/
public class Activity2 extends Activity {
private TextView text1=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
Intent intent=getIntent();
String value=intent.getStringExtra("value");
text1=(TextView)findViewById(R.id.act2_textview1);
text1.setText(value);
}
}
activity1.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/act1_text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<EditText
android:id="@+id/act1_text2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:id="@+id/act1_button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button1"
/>
</LinearLayout>
activity2.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/act2_textview1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">demo_android1</string>
<string name="activity1">activity1</string>
<string name="activity2">activity2</string>
<string name="button1"> 加 </string>
</resources>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.pj"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Activity1"
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/activity2">
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
</manifest>
最后来一张程序运行图,有兴趣的同事可以直接将附件下载下来装到手机里面试一下(Android2.1以后版本可用)。

- 大小: 9.5 KB

- 大小: 31.8 KB
分享到:
相关推荐
首先,Activity是Android应用程序的基本构建块,它代表了用户可以看到和与之交互的屏幕。一个应用可能包含多个Activity,每个都有不同的功能,比如登录界面、主屏幕或设置页面。Activity的状态包括运行(onResume)...
Activity是Android应用的核心组件之一,它负责为用户提供与应用交互的界面。Activity作为一个可视化的窗口,用户可以通过与这个窗口互动来执行各种操作,比如打电话、拍照、发送邮件或查看地图等。每个Activity都有...
Android Activity是Android应用程序的核心组件之一,它代表了一个用户可见的屏幕界面,用户可以在其中与应用进行交互。Activity的生命周期由一系列回调方法组成,这些方法在Activity的创建、显示、隐藏和销毁过程中...
在Android中,Activity是用户界面的基本单元,当用户与应用交互时,可能会在不同的Activity之间切换。创建Intent并指定目标Activity即可实现这一操作。以下是一个简单的示例: ```java Intent intent = new Intent...
本资源包含的是关于Android Activity与Intent相关的Java源代码,非常适合学习Android开发的同学参考。 首先,我们来看Activity。Activity是一个具有用户界面的单个屏幕,它负责处理用户交互和展示UI。在Java源码中...
Activity是Android应用中的核心组件,它是用户界面的主要承载者,用户与应用进行交互的主要途径。理解Activity的生命周期和Intent的传值机制对于Android开发者来说至关重要。 Activity的生命周期分为三个主要阶段:...
【Android Intent 启动和关闭Activity】 在Android应用程序开发中,Intent是连接各个组件(如Activity、Service等)的关键桥梁,主要用于启动和关闭Activity。Intent不仅能够启动一个新的Activity,还能在Activity...
android Activity& android Intent详解, 入门级别
优达学城的相关总结 有不理解或者有疑惑的同学可以给我留言 人多的话我会留易信资料 自己总结 有错误希望能帮助总结 拼写错误不用指出了
在Android应用开发中,Intent是一种强大的机制,用于在组件之间建立通信桥梁,特别是在Activity之间进行切换和数据传递。本文将详细讲解如何通过Intent实现Activity之间的切换,并探讨如何利用Intent进行数据传递。 ...
Intent不仅可以用来启动新的Activity,还可以在组件间传递数据。在这个场景中,我们关注的是如何在Activity之间通过Intent传递一个有序且可排序的Map集合。理解这个知识点对于优化应用的数据传输流程至关重要。 ...
本篇将重点讲解如何利用Intent在Android中调用Activity,并进行数据的传递与接收。 首先,让我们了解一下Activity。在Android中,Activity是用户界面的载体,它代表了用户可以看到并与其交互的一个屏幕。通过Intent...
每个Activity都有一个与之关联的布局文件,用于展示用户界面。Activity生命周期包括创建(onCreate())、启动(onStart())、可见(onResume())、暂停(onPause())、停止(onStop())、恢复(onRestart())和销毁...
在Android应用开发中,Activity和Intent是两个至关重要的概念,它们构成了Android应用程序的基本骨架。Activity作为用户界面的主要载体,Intent则是连接各个组件的桥梁,负责传递消息和启动操作。 Activity的生命...
### Android Activity和Intent机制详解 #### 一、Activity机制概览 **1.1 定义及作用** 在Android开发中,Activity是最基本的应用组件之一,可以将其理解为用户界面的一个屏幕。它提供了用户与应用交互的主要场所...
Intent主要用于启动新的Activity、Service,或者传递数据。在这个场景中,我们将关注Intent如何实现Activity之间的启动,以及如何结合Dialog的使用。 首先,Intent分为显式Intent和隐式Intent。显式Intent通过指定...
在Android开发中,Activity和Intent是两个至关重要的概念,它们构成了Android应用交互的基础。Activity可以理解为应用程序中的一个窗口或视图,用户与应用进行交互的主要界面。Intent则是一种消息传递机制,它用于...
3. Activity之间的跳转与数据传递:通过Intent启动新Activity,并在Intent中添加额外数据。 4. onActivityResult()回调:当从一个Activity返回另一个Activity时,处理返回的结果数据。 5. IntentFilter的使用:对于...
启动Service的方式与启动Activity类似,只是使用`startService(intent);`而不是`startActivity()`. 服务通常用于执行后台任务。 6. **传递数据**: 使用`putExtra()`方法添加键值对到Intent的Extras中,如`intent...