Activity---Activity之间数据交流(onActivityResult的用法)

主要功能:

在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。这样的数据交流就要用到回调函数onActivityResult。

<1>startActivityForResult(Intent intent, int requestCode);

第一个参数:一个Intent对象

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

<2>onActivityResult(int requestCode, int resultCode, Intent data)

第一个参数:这个整数requestCode提供给onActivityResult,是以便确认返回的数据是从哪个Activity返回的。

            这个requestCode和startActivityForResult中的requestCode相对应。

第二个参数:这整数resultCode是由子Activity通过其setResult()方法返回。


第三个参数:一个Intent对象,带有返回的数据。

<3>setResult(int resultCode, Intent data)

调用这个方法把Activity想要返回的数据返回到父Activity

第一个参数:当Activity结束时resultCode将归还在onActivityResult()中,一般为RESULT_CANCELED , RESULT_OK。

第二个参数:一个Intent对象,返回给父Activity的数据。


       

   


本实例一共有三个Activity。点击飞往火星跳转到otherActivity,把地球带给火星的消息显示在otherActivity中。点击返回地球时把火星带给地球的消息传到主Activity.

同理:

点击飞往月球跳转到thirdActivity,把地球带给月球的消息显示在thirdActivity中。点击返回地球时把月球带给地球的消息传到主Activity.

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
在 Android 中,activity 之间数据回传可以通过 startActivityForResultonActivityResult 方法来实现。 首先,在调用下一个 activity 之前,需要使用 startActivityForResult 方法启动该 activity。在 startActivityForResult 方法中,可以传递一个 requestCode 参数,该参数用于标识该请求的唯一性。 在新的 activity 中,当需要返回数据给调用该 activityactivity 时,可以使用 setResult 方法设置返回结果,并在 setResult 方法中传递一个 resultCode 参数和一个 Intent 对象。其中,resultCode 参数用于标识返回结果的状态,而 Intent 对象则用于携带返回的数据。 最后,在调用该 activityactivity 中,需要重写 onActivityResult 方法,并在该方法中处理返回的结果。在 onActivityResult 方法中,可以通过 requestCode 和 resultCode 参数来确定返回结果的来源和状态,通过 data 参数来获取返回的数据。 以下是一个示例代码: 在调用 activity 的代码中: ``` Intent intent = new Intent(this, SecondActivity.class); startActivityForResult(intent, REQUEST_CODE); ``` 在新的 activity 中: ``` Intent intent = new Intent(); intent.putExtra("data", "Hello, World!"); setResult(RESULT_OK, intent); finish(); ``` 在调用该 activityactivity 中: ``` @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { String result = data.getStringExtra("data"); // 处理返回的数据 } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值