onActivityResult方法的使用

转发自:https://blog.csdn.net/hacker_crazy/article/details/78345450

 

在进行界面间的跳转和传递数据的时候,我们有的时候要获得跳转之后界面传递回来的状态,数据等信息。这个时候,我们不一定需要使用Intent进行跳转回原先设置的界面,而是使用onActivityResult方法就可以解决这个问题。

原理如图:

 

 

 

我们这里假设有A、B两个Activity,由A跳转到B,然后B返回到A。

在这一过程中,我们在A启动B的过程中调用startActivityForResult()方法来启动B,

然后在B中调用Context.setResult()方法来传递返回的Code,

并在A中的onActivityResult()方法中解析返回的结果,并做相应的逻辑操作。

 

对几个方法的解释:

1.startActivityForResult(Intent Intent, int requestCode):

该方法要在onCreate中调用,传递的参数有两个,一个是Intent,intent中可以携带传递的数据;另一个是int型的请求码Code,请求码可以自己定义。

请求码的作用:为了区分启动不同的Intent,或者传递不同的数据使用,作为一种不同启动的标识。比如A有两个Button都要启动B,为了区分是哪个Button启动的B,我们就要设置两个不同的请求码来区分。

这个方法是启动B的启动方法,调用之后会跳转到界面B,并传递相应的数值。同时,对于具体Intent传递的数值,可以使用接下来讲解的onActivityResult()方法来传递,这样启动方法和数据操作方法分开写,会更好。

 

2.B中的setResult方法。

setResult()方法有两个,一个是只含有int型参数ResultCode,另一个是可以传递Intent的,分别为,如图:

 

 

 

使用方法就是获取当前Activity作为对象,并调用该方法,然后再执行finish()方法,结束当前界面就可以。

当调用setResult方法之后,A界面就已经收到了发送的数据。

 

3.onActivityResult()方法的使用:

参数类型如图:

 

 

 

三个参数分别为int型 requestCode, int型 resultCode,  Intent型 data。

第一个是请求码,可以进行传递数据前的一些操作,比如根据不同的请求码,设置不同的传递内容。

第二个是返回码,也就是在B中设置的int的数值,这个是得到返回的内容的标识。

第三个是Intent的数据,比如在B中的setResult方法中传递了一些数据,在A中就可以通过解析Intent的内容来获得传递过来的数据。

对于具体的写法,可以按照下图的方式构造:

 

 

 

 


————————————————
版权声明:本文为CSDN博主「hacker_crazy」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hacker_crazy/article/details/78345450

posted @ 2019-09-19 14:47  有肉的三明治  阅读(6382)  评论(0编辑  收藏  举报