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()这个方法中; |
大家给个赞,就是给我最大的鼓励!!!