startActivityForResult使用小结

在Android开发中,使用startActivityForResult(Intent intent, int requestCode)可以从新打开的Activity获取返回数据。当新Activity通过setResult(int resultCode, Intent data)关闭时,原始Activity会重写onActivityResult方法来接收结果。requestCode用于标识请求来源,可以自定义;resultCode则用于区分不同来源的返回数据,通常配合switch语句进行判断处理。" 109711641,6281714,Go语言性能分析:pprof详解与实战,"['Go语言', '性能优化', 'web开发', '框架', '调试工具']
摘要由CSDN通过智能技术生成

Activity中得到新打开Activity 关闭后返回的数据,需要使用系统提供的startActivityForResult(Intent intent, int requestCode)方法打开新的Activity,新的Activity 关闭后会向前面的Activity传回数据,为了得到传回的数据,必须在前面的Activity中重写onActivityResult(int requestCode, int resultCode, Intent data)方法

如果是A跳到B的话

startActivityForResult(new Intent(A.this, B.class), 1);
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        String result = data.getExtras().getString("result");//得到新Activity 关闭后返回的数据
        Log.i(TAG, result);
    }

requestCode 请求码,即调用startActivityForResult()传递过去的值
resultCode 结果码,结果码用于标识返回数据来自哪个新Activity

新Activity关闭前需要向前面的Activity返回数据需要使用系统提供的setResult(int resultCode, Intent data)方法实现:

Intent intent = new Intent();
                //把返回数据存入Intent
                intent.putExtra("result", "A");
                //设置返回数据
                OtherActivity.this.setResult(RESULT_OK, intent);
                //关闭Activity
                finish();

上面代码中使用到的RESULT_OK是系统Activity类定义的一个常量

What is requestCode?
请求码的值是根据业务需要由自已设定,用于标识请求来源。一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。在onActivityResult()方法如果需要知道新Activity是由那个按钮打开的,并且要做出相应的业务处理,可以自己用switch做一下判断

What is resultCode?
在一个Activity中,可能会使用startActivityForResult()方法打开多个不同的Activity处理不同的业务,当这些新Activity关闭后,系统都会调用前面Activity的onActivityResult(int requestCode, int resultCode, Intent data)方法。为了知道返回的数据来自于哪个新Activity,在setResult()里传入resultCode,在onActivityResult(int requestCode, int resultCode, Intent data)里进行判断,就知道来自哪个返回的信息了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值