Activity和Intent的关系

本文介绍Android中多个Activity之间的关系及如何使用Intent启动Activity并传递数据。详细解释了Intent的组成部分,如ComponentName、Action和Data等,以及如何通过Intent在不同Activity间传递键值对。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.多个Activity之间的关系

Acticity 01------startActivity(Intent intent)------>Activity 02

2.Intent的基本作用(Intent还有其它作用,这里只讨论在Activity之间的作用)
Intent是一个对象,有点像一个请求,包含了一组信息:
1)Componentname###
一个Activity想要启动另一个Activity,必须说明哪一个,它的作用就是指明具体的Activity
2)Action###
启动另外一个Activity以后,指定另外一个Activity做什么,官方有很多Action,比如打电话等等
3)Data###
一个Activity向另外一个Activity里面传送了什么样的数据,是一个URI
//

//淡紫色的部分暂时不学习,等到需要的时候,或者学习到后面的时候遇到再回来看看
//4)Catagory
5)Extras###
在一个Activity中存放一些键值对,然后在另一个Activity中把它们取出来。这个东西还很重要。在一个Activity中使用intent.putExtra("key",value)来添加键值对,再在另外一个Activity中通过intent.getStringExtra(“key”)方法
//6)Flags
//
3.在一个Activity中启动另一个Activity的方法
1)首先我见过的Activity的启动基本上都是基于Button(Button有很多种)的,在一个Activity中设置一个Button,点击这个Button,就跳转到另外一个Activity

2)所以Button要有一个监听器,实现OnClickListener方法(即创建一个内部类),比如XXXListener,针对某个按钮特别定义的内部类,里面进行一些操作。创建好了以后在主类中创建一个对象直接引用假如叫做button,然后通过button.setOnClickListener(new XXXListener());  就可以调用了(详情参见另外一篇关于Button控件的博文)

3)在该监听器里面创建一个Intent对象,然后调用intent里面的setClass(Context packageContext, Class<?> cls)方法,Context在这里差不多就是Activity的意思,这个方法的意思就是从Context指明的这个Activity(假如说名字为Activity01)跳转到Class指定的Activity(假如说名字为Activity02),所以说正确的表达方式就是

setClass(Activity01.this, Activity02.class);

记住,务必加上this和class

4)然后调用当前Activity的startActivity方法,它是Activity中的方法,因为这个Activity01继承了Activity,所以可以直接用该方法,并且把设定好的Intent对象当作参数传进去。表达式为Activity01.this.startActivty(intent);

注意:如果想跳转到系统自带的app的activity(或者说跳转到的activity不和这个activity在一个应用中),那么首先创建一个Uri对象,使用Intent带参的构造方法,添加一个系统的action,以及uri,startActivity就行。

举个例子:

Uri uri =Uri.parse("smsto://080000123");
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
startActivity(intent);


4.使用Intent在Activity之间传递数据的基本方法

假如说你已经定义好了一个intent对象,那么你可以使用其中的putExtras()方法,放一个键值对进去,然后在跳转的activity里面取得这个intent,然后调用get开头的方法,传入键的值,从而取得值。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值