【Android】——Intent总结

Intent(又被称为意图)???——》不是组件,而是组件之间进行交互的一种方式;???——》指明当前组件要执行的动作,在不同组件之间进行传递数据;

Intent机制???——》一种运行绑定机制;

 

Intent分类???——》

显示Intent???——》通过Component可以直接设置需要调用的Activity类,可以唯一确定一个Activity,意图特别明确;???——》直接通过名称开启指定的目标组件;隐示Intent???——》不明确指定启动哪个Activity,而是设置Action、Data、Category,让系统来筛选出合适的Activity;

应用:

1、构造方法传入Component;

注意:

参数Context???——》要求提供一个启动活动的上下文;

参数cls???——》指定想要启动的目标活动;

 

 

2、setComponent方法;

 

 

3、setClass/setClassName方法;

应用:

第一种方法???——》

1、AndroidManifest.xml文件中,首先被调用的Activity要有一个带有<intent-filter>并且包含<action>的Activity,设定它能处理的Intent,并且category设为"android.intent.category.DEFAULT";

注意:

action的name是一个字符串,可以自定义;???——》例如我在这里设成"abcdefg";

注意:

(1)<action>标签???——》指明了当前活动可以响应android:name这个活动;

(2)<category>标签???——》包含一些附加消息;

(3)只有<action>和<category>中的内容同时能够匹配上Intent中指定的action和category时,这个活动才能响应Intent;

(4)每个Intent中只能指定一个action,但能指定多个category;

 

 

2、在MainActivity文件中,设置Action;???——》表明意图;

(1)setAction方法

(2)构造方法直接设置Action

注意:

(1)其他应用程序也可调用,只要使用Action字符串;???——》手机QQ可以调用QQ空间,可以调用腾讯微博等;???——》防止应用程序之间互相影响,命名方式:包名+Action名;

 

第二种方法???——》

1、在MainActivity文件中;

解析:

(1)通过Uri.parse()方法,将一个网址字符串解析成一个Uri对象;

(2)再调用Intent的setData()方法将这个Uri对象传递进去;

(3)setData()???——》指定当前Intent正在操作的数据,而这些数据都是以字符串的形式传入到Uri.parse()中解析产生;

 

2、在AndroidManifest.xml文件中;

<intent-filter>标签???——》配置一个<data>标签;???——》更精确地指定当前活动能够响应什么类型的数据;

解析:

<data>标签可配置内容???——》

android:schema;???——》指定数据的协议部分;

android:host;???——》指定数据的主机名部分;

android:port;???——》指定数据的端口部分;

android:path;???——》指定主机名和端口之后的部分;

android:mimeType;???——》指定可以处理的数据类型;

注意:

1、只有<data>标签中指定的内容和Intent中携带的Data完全一致时,当前活动才能够响应Intent;

 

 

上面的Intent应用其实都只是启动一个活动;但是Intent还有在启动活动时传递数据的应用;

向下一个活动传递数据向上一个活动传递数据

传递???——》

解析:

putExtra方法???——》

第一个参数时键;???——》从Intent中取值;

第二个参数是传递数据;

 

 

接收???——》

解析:

getIntent方法???——》获取到用于启动SecondActionIntent,然后调用getStringExtra()方法;如果传递的是布尔型数据,则使用getBooleanExtra()方法;

第一种方法???——》

1、startActivityForResult()方法???——》启动活动,但这个方法期望在活动销毁的时候能够返回一个结果给上一个活动;

解析:

startActivityForResult()接收两个参数;???——》

第一个参数是Intent;

第二个参数是请求码;???——》在之后的回调中判断数据的来源;???——》是唯一值就可以了;

 

2、在SecondActivity中个按钮注册点击事件,并在点击事件中添加返回数据的逻辑;

解析:

setResult()方法???——》接收两个参数;???——》

第一个参数???——》用于向上一个活动返回处理结果;???——》PESULT_OK或RESULT_CANCELED;

第二个参数???——》把带有数据的Intent传递回去,然后调用finish()方法来销毁当前活动;

向上一个活动传递数据???——》

 

 

第二种方法???——》

按Back键返回到FirstActivity;

3、在FirstActivity中重写这个方法来得到返回的数据;

解析???——》

1、onActivityResult()方法带有三个参数;???——》

(1)、requestCode???——》在我们启动活动时传入的请求码;

(2)、resultCode???——》在返回数据时传入的处理结果;

(3)、data???——》携带着返回数据的Intent;

 

2、检查requestCode的值来判断数据来源;???——》在一个活动中有可能调用startActivityResult()方法去启动很多不同的活动,每一个活动返回的数据都会回调到onActivityResult()这个方法中;


 

 

大家给个赞,就是给我最大的鼓励!!!

注意:“赞”位于右上角;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值