Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执 行的动作,还可以在不同组件之间传递数据。Intent一般可用于启动Activity、启动Service以 及发送广播等场景
Intent大致可以分为两种:显式Intent和隐式Intent
01.显示Intent
构建intent对象,第一个参数传入this也就是FirstActivity作为上下文,第二个参数传入SecondActivity::class.java作为目标Activity
startActivity()方法,专门用于启动Activity,它接收一个Intent参数
02.隐式Intent(官方推荐)
只有<action>和<category>中的内容同时匹配Intent中指定的action和category时,这个 Activity才能响应该Intent。
03.打开百度浏览器
第一种直接跳转到浏览器
第二种内嵌选择,主要改动是mainfest
04. 给下一个Activity传递数据
在FirstActivity中通过putExtra方法塞值,传递给SecondActivity中进行打印
在SecondActivity中通过getStringExtra进行获取传递的值,并通过Log打印出来
如果传递的是整型数据,则使用getIntExtra()方法;如果传递的是布尔型数据, 则使用getBooleanExtra()方法,以此类推
05.返回数据给上一个Activity
startActivityForResult方法是打开新的activity并在关闭后返回数据 ,startActivityForResult()方法接收两个参数:第一个参数还是Intent;第二个参数是请 求码,用于在之后的回调中判断数据的来源。
可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个Text2Activity,而当这个Text2Activity调用了finish()方法以后,程序会自动跳转回T1Activity,并调用前一个T1Activity中的onActivityResult( )方法。专门用于向上一个Activity返回数据。
setResult()方法接收两个参数:第一 个参数用于向上一个Activity返回处理结果,一般只使用RESULT_OK或RESULT_CANCELED这 两个值;第二个参数则把带有数据的Intent传递回去。最后调用了finish()方法来销毁当前 Activity。
onActivityResult()方法带有3个参数:第一个参数requestCode,即我们在启动Activity 时传入的请求码;第二个参数resultCode,即我们在返回数据时传入的处理结果;第三个参 数data,即携带着返回数据的Intent。由于在一个Activity中有可能调用 startActivityForResult()方法去启动很多不同的Activity,每一个Activity返回的数据都 会回调到onActivityResult()这个方法中,因此我们首先要做的就是通过检查 requestCode的值来判断数据来源。确定数据是从SecondActivity返回的之后,我们再通过 resultCode的值来判断处理结果是否成功。最后从data中取值并打印出来,这样就完成了向 上一个Activity返回数据的工作。