嘿,各位在代码世界里摸爬滚打的准大神们!今天咱们来聊一个Android开发里既基础又贼重要的话题——多个Activity之间,怎么“呼来唤去”,还得让被叫走的那位“带点东西回来”。
想象一下这个场景:你(主Activity)在家里(主界面)舒舒服服躺着,突然想吃外卖了。这时候你有两个选择:
- 普通呼叫: 你打开外卖App(启动新Activity),看了一眼,然后直接按Home键溜了(按返回键)。结果就是,你啥也没买,空手而归。这在代码里对应
startActivity(),一别两宽,各自安好。 - 带任务呼叫: 你打开外卖App(启动新Activity),精挑细选,下单付款,然后App告诉你“订单已生成,预计30分钟送达”。最后你返回桌面,但你的手里(或者说,你的记忆里)多了一个“订单号”。这就是我们今天要说的 “调用另一个Activity并返回结果”。
后一种情况,在编程世界里,我们称之为 “启动一个Activity以获得结果”。它就像是派你的小弟(新Activity)出去执行一个任务,任务完成后,他必须回来向你汇报,并且把任务成果(比如一份机密文件、用户的选择、一张拍好的照片)亲手交到你手上。
第一幕:出发前的准备——行李打包与接头暗号
在你派小弟出门之前,你得告诉他两件事:
- 你要去哪,干什么? (通过Intent指定目标Activity)
- 我凭什么认定是你回来了? (请求码 Request Code)
在我们的外卖比喻里,“打开外卖App”这个动作,就是一个Intent。我们通过 startActivityForResult(intent, requestCode) 这个方法,来启动这次“带结果的旅程”。
requestCode 是个啥?
想象一下,你同时派了小弟A去买奶茶(请求码=1),又派了小弟B去取快递(请求码=2)。过了一会儿,小弟回来了,你光看脸可能记不清是谁,但如果你出门前给他们每人发了个不同颜色的帽子(请求码),你就能立刻分清:哦,戴红帽子(请求码=1)的是买奶茶的,我得问他奶茶买好了没。
这个 requestCode 就是你自定义的一个整数,用来在之后区分是哪个“小弟”回来了。
第二幕:小弟的独立任务——干活与打包结果
小弟(新Activity)被启动后,他会独立运行,拥有自己的界面和逻辑。比如,他可能是一个让用户选择联系人的界面,或者是一个拍照界面。
当他的任务完成时(用户选好了联系人,或者拍完了照片),他不能默默地自己关闭就完事了。他需要做两件事:
- 把任务结果打包。 (准备一个Intent,把数据放进去)
- 设定任务状态。 (是成功完成了,还是用户取消了?)
- “自杀”并送回结果。 (调用
setResult()然后finish())
这里的关键方法是 setResult(int resultCode, Intent data)。

最低0.47元/天 解锁文章
7124

被折叠的 条评论
为什么被折叠?



