在一个父Activity经过intent跳转至多个不一样子Activity上去,当子模块的代码执行完毕后再次返回父页面,将子activity中获得的数据显示在主界面/完成的数据交给父Activity处理。这种带数据的intent跳转须要使用activity的onActivityResult()方法。url
(1)startActivityForResult(Intent intent, int requestCode);.net
第一个参数:一个Intent对象,用于携带将跳转至下一个界面中使用的数据,使用putExtra(A,B)方法,此处存储的数据类型特别多,基本类型所有支持。对象
第二个参数:若是> = 0,当Activity结束时requestCode将归还在onActivityResult()中。以便肯定返回的数据是从哪一个Activity中返回,用来标识目标activity。blog
所以,若是想要标识返回值是从哪一个页面返回的,就要给每一个页面的requestCode设置为不一样的值;get
(2)onActivityResult(int requestCode, int resultCode, Intent data)it
第一个参数:这个整数requestCode用于与startActivityForResult中的requestCode中值进行比较判断,是以便确认返回的数据是从哪一个Activity返回的。io
第二个参数:这整数resultCode是由子Activity经过其setResult()方法返回。用于标识从requestCode所标识的页面返回的数据的返回值;class
第三个参数:一个Intent对象,带有返回的数据。能够经过data.getXxxExtra( );方法来获取指定数据类型的数据;request
一个页面可能有不一样的返回值,经过resultCode区分页面的返回值,相似于请求url能够获取到不一样的返回值;而requestCode则表示确实是从你请求的页面返回的结果;分页
在判断时,可根据实际需求进行判断,能够先判断resultCode,也能够先判断requestCode
(3)setResult(int resultCode, Intent data)
在intent跳转的目的地界面调用这个方法把Activity想要返回的数据返回到主Activity,即子activity页面
第一个参数:当Activity结束时resultCode将归还在onActivityResult()中,用于双方协定返回码;
第二个参数:一个Intent对象,返回给主Activity的数据。在intent对象携带了要返回的数据,使用putExtra( )方法。即该resultCode所携带的数据;
注意:
1. 一个页面最多只能有一个onActivityResult(),由于这个是拿到结果的地方;根据不一样页面(requestCode )返回的不一样结果(resultCode)来获取想要的结果;
2. 一个页面能够有多个startActivityForResult(), 由于能够从一个页面的不一样组件跳转至不一样的页面;startActivityForResult()实际就是启动intent跳转,所以不须要另外使用别的跳转;
3. 一个页面最多能够有多个setResult(), 由于这个是返回码和返回值,能够有多个返回码和返回值;该页面的intent跳转不须要传入要返回到哪一个页面;
4. setResult()后面须要调用finish()结束当前的activity;