• 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

  • 相关阅读:
    Codeforces 977F
    Codeforces 219C
    Codeforces 1132
    Codeforces 660C
    Codeforces 603A
    Codeforces 777C
    Codeforces 677
    JNUOJ 1032
    Codeforces 677D
    Codeforces 835C
  • 原文地址:https://www.cnblogs.com/yycc/p/11549643.html
Copyright © 2020-2023  润新知