Android onActivityResult setResult的用法

使用场景:A页面跳到B页面,B页面再回到A页面同时把一些数据回传给A页面

首先A打开B页面先通过 startActivityForResult进行启动,在 A页面进行 onActivityResult方法进行接收,B页面回到A页面时通过 setResult 进行传递。

startActivityForResult(Intent intent, int requestCode);
第一个参数:一个Intent对象
第二个参数:如果> = 0,当Activity结束时requestCode将归还在onActivityResult()中。以便确定返回的数据是从哪个Activity中返回

onActivityResult(int requestCode, int resultCode, Intent data)

第一个参数:requestCode提供给onActivityResult,是以便确认返回的数据是从哪个Activity返回的。就是B页面回到A页面时

setResult()中第一个参数的值

            这个requestCode和startActivityForResult中的requestCode相对应。
第二个参数:这整数resultCode是由子Activity通过其setResult()方法返回。

setResult(int resultCode, Intent data)
调用这个方法把Activity想要返回的数据返回到父Activity
第一个参数:当Activity结束时resultCode将归还在onActivityResult()中,一般为RESULT_CANCELED , RESULT_OK。
第二个参数:一个Intent对象,返回给父Activity的数据。

 

B页面进行 setResult之后进行finish,在finish过程中会有一个intent遍历,不为空时即把数据传递给 A 页面


在做授权SDK过程中会出现 setResult 的Intent 中传的 Class类和SDK不能直接引用

大致过程如下:

oauth.jar

Model A 要引用 oauth的授权,因为oauth是jar(或者aar),在做授权回调完进行 setResult进行结果回传,但是不知道Model A 

中的具体那个Class。可以通过 在打开 oauth.jar 授权页面的时候通过 Intent把Class这个具体类传过去, Class有 Serializable接口,所以可以通过 intent传递

接收到。

Intent intent = new Intent(mActivity,ChengguangLoginActivity.class);
intent.putExtra("class",mActivity.getClass());
mActivity.startActivityForResult(intent,0);

ouath中的Activity接收Class


   Intent intent = new Intent(mActivity, (Class) getIntent().getSerializableExtra("class"));
   intent.putExtra("successJson", obj.toString());
   setResult(999, intent);
   finish();


这样就可以实现 mActivity 也能正常接收到 oauth.jar 包中Activity的回调。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值