使用场景:A页面跳到B页面,B页面再回到A页面同时把一些数据回传给A页面
首先A打开B页面先通过 startActivityForResult进行启动,在 A页面进行 onActivityResult方法进行接收,B页面回到A页面时通过 setResult 进行传递。
startActivityForResult(Intent intent, int requestCode);
第一个参数:一个Intent对象
第二个参数:如果> = 0,当Activity结束时requestCode将归还在onActivityResult()中。以便确定返回的数据是从哪个Activity中返回
第一个参数:requestCode提供给onActivityResult,是以便确认返回的数据是从哪个Activity返回的。就是B页面回到A页面时
setResult()中第一个参数的值
第二个参数:这整数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();