Android(课余甜点)第二天--intent的使用
intent的作用
活动之间的启动器,以及传输活动之间数据传输的载体
步骤
一、启动器
1.
intent是Android程序当中组件之间进行交互的一种重要的方式,intent一般可用于启动活动、启动服务、以及发送广播;目前我只学到了启动活动,其他的目前还没有接触到。
2.
启动活动分为两种:显式intent与隐式intent
显式intent
指的是在声明intent时明确指出将要启动的活动:
这种指名道姓的方式简单,明快,一般用于操作简单,系统不复杂的时候;但是更多的时候需要灵活性更强的intent来满足用户的需求
隐式intent
这种方式更加含蓄,用简单一句话概括该隐式intent就是:广播(这个广播与接下来的广播不同);想象一个这样的场景:HR拿着一个大喇叭喊:有谁满足blablabla的条件吗?有的话我给你offer.。HR就是代表当前活动,而所谓的条件是指在intent中声明的action是zw,category是 name(zw,与name是我随便取的):
而满足该条件的活动需要在 注册“身份证”时的备注一下:
action 与最后一个category中的内容对应我刚刚取的字符串,中间的category是常量必须加上去的(不加上去也可以,就是闪退嘻嘻嘻)
但是action与category两者不一定要全有,比如HR只说了action条件,我们只要满足action跟他一样就行。但是每个intent只能指定一个action可以指定多个category,这样做的目的不言而喻。
更多隐式intent的用法
隐式intent比显式intent好的地方不仅仅在灵活性上,隐式intent可以调用其他程序中的活动实现了Android多个程序之间的功能共享,比如你想链接到地图,你没必要自己做一个地图程序然后链接过去,而直接使用Android内置的动作就可以实现:例如实现拨号:
二、数据传输
1
数据的传输主要是指活动之间的数据传输(包括:向上传和向下传)
2
向下传
当前活动:
putExtral函数第一个参数是:键(取值的钥匙)
接收活动:
接收活动用钥匙(键)把值取出来,并放在data中。
向上传
1.当前活动;
当前活动(E)声明一个intent 用于启动下一个活动(F)
startActivityForResult第一个参数用于启动下一个活动(F),第二个参数(requestCode)是请求码(绑定在要启动的活动中用于返回判断):假想成一个空口袋等待装入东西 ,但是当前活动(E)不仅仅一个口袋可能有多个,所以需要给每个口袋命名方便接下来接收到自己想要的东西,所以一般用数字表示且唯一。
2. 下一个活动(F)向上面传值:
跟向下传值一样也需要声明一个intent而且一个字符串,同时把字符串传入intent。
同时也生成一把钥匙(data_Return),setResult()方法特别重要,是专门用于向上一个(F)返回数据的,第一个参数指的是处理结果(一般为RESULT_OK与RESULT_CANCELED表示处理状态),第二个是要传入的值。
3 回到当前活动
由于当前活动(E)之前用startActivityForResult()方法启动下一个活动(F)的所以在下一个活动(F)销毁之后回调上一个活动(F)的onActivityResult()方法所以此时需要重写该方法来接收数据。由于我们之前绑定了唯一的requestCode所以对返回的requestCode进行判断装入哪个口袋当中,然后判断有无数据(有:RESULT_OK; 无:RESULT_CANCELED)。