场景
一个 Activity A 启动了一个新的 Activity B 之后, A 很有需要在 B 完成某些操作后, 作出一定的页调整, 比如 A 调用了一个登录 Activity B, 那么在 B 完成登录后, 很可能 A 里的部分组件就需要做一些更改, 以展示登录后的效果, 比如显示已登录用户的用户名和头像.
实现
1. Activity A 实现部分
启动 Activity B:
startActivityForResult(Intent intent, int requestCode)
参数1 – intent: 启动 Activity B 的 Intent 对象
参数2 – requestCode: 分配给 Activity B 的识别码, 用于标识 Activity 返回结果来源的标识, 因为一个 Activity A 可能会执行多种启动新 Activity 的操作, 这样可以标识是从哪个新的Activity 返回的结果
定义接收接口:
onActivityResult(int requestCode, int resultCode, Intent data)
参数1 – requestCode: 同上
参数2 – resultCode: Activity B 返回的结果值
参数3 – 由 Activity B 返回的 Intent 对象, 用于 Activity 间的数据传递.
以上完成后一个准备接受返回结果的 Activity A 就已经 stand by 了.
2. Activity B 实现部分
设置返回结果:
setResult(int resultCode, Intent data)
参数1 – resultCode: Activity B 返回的结果值, 会被 Activity A 的 onActivityResult 的参数2 接收到
参数2 – intent: Activity B 期望传递给 Activity A 的数据, 会被 Activity A 的 onActivityResult 的参数3 接收到
至此整个操作就完成了