onActivityResult 的⽤法-Activity 间回调传递数据
主要功能:
在⼀个主界⾯(主Activity)上能连接往许多不同⼦功能模块(⼦Activity 上去),当⼦模块的事情做完之后就回到主界⾯,或许还同时返回⼀些⼦模块完成的数据交给主Activity 处理。这样的数据交流就要⽤到回调函数onActivityResult 。
<1>startActivityForResult( intent, int requestCode);
第⼀个参数:⼀个Intent 对象
第⼆个参数:如果> = 0,当Activity 结束时requestCode 将归还在onActivityResult()中。以便确定返回的数据是从哪个Activity 中返回
<2>onActivityResult(int requestCode, int resultCode,  data)
第⼀个参数:这个整数requestCode 提供给onActivityResult ,是以便确认返回的数据是从哪个Activity 返回的。
这个requestCode 和startActivityForResult 中的requestCode 相对应。
第⼆个参数:这整数resultCode 是由⼦Activity 通过其setResult()⽅法返回。
第三个参数:⼀个Intent 对象,带有返回的数据。
<3>setResult(int resultCode,  data)
调⽤这个⽅法把Activity 想要返回的数据返回到⽗Activity
第⼀个参数:当Activity 结束时resultCode 将归还在onActivityResult()中,⼀般为RESULT_CANCELED , RESULT_OK 。
第⼆个参数:⼀个Intent 对象,返回给⽗Activity 的数据。
实例说明:
从母Activity 页⾯点击按钮进⼊某⼦Activity 页⾯,⽤到<1>,提前声明了 public static final int REQUSET = 1;
⼦Activity 打开后,处理操作,现在点击按钮返回母Activity 页⾯,并携带数值回去,⽤到<3>
回到母Acitivity ,进⾏处理和相关的操作,⽤到<2>
同时我们可以根据返回的requestCode 不同,做出相对应的不同操作,例如多个页⾯跳转回调的时候, switch (requestCode) {case 1,case2}。[java]
1.    Intent intent = new  Intent();
2.    intent.setClass(MainActivity.this , CitySelect.class );
3.    startActivityForResult(intent, REQUSET);
4.    break ;  [java]
1.    //数据是使⽤Intent 返回
2.      Intent intent = new  Intent();
3.      //把返回数据存⼊Intent
4.      intent.putExtra("result", "My name is ******");
5.      //设置返回数据 或者setResult(RESULT_OK, intent);
安卓intent用法6.      CitySelect.this .setResult(RESULT_OK, intent);
7.      //关闭Activity 或者finish();
8.      CitySelect.this .finish();
9. }
[java]
1. public  void  onActivityResult(int  requestCode, int  resultCode, Intent data) {
2.        super .onActivityResult(requestCode, resultCode, data);
3.        if  (requestCode == REQUSET && resultCode == RESULT_OK) {
4.        String str = Extras().getString("result");
5. }