zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    XAML学习笔记之Layout(五)——ViewBox
    XAML学习笔记——Layout(三)
    XAML学习笔记——Layout(二)
    XAML学习笔记——Layout(一)
    从0开始搭建SQL Server 2012 AlwaysOn 第三篇(安装数据,配置AlwaysOn)
    从0开始搭建SQL Server 2012 AlwaysOn 第二篇(配置故障转移集群)
    从0开始搭建SQL Server 2012 AlwaysOn 第一篇(AD域与DNS)
    Sql Server 2012 事务复制遇到的问题及解决方式
    Sql Server 2008R2升级 Sql Server 2012 问题
    第一次ACM
  • 原文地址:https://www.cnblogs.com/yycc/p/11549643.html
Copyright © 2011-2022 走看看