Android安卓——Intent(2)传递数据

本文介绍了在Android中如何通过Intent进行数据传递,特别是如何在父子Activity之间进行数据通信。首先,以Sub-Activity方式启动子Activity,使用startActivityForResult()方法并传入请求码。然后,子Activity在关闭前通过setResult()设置返回值,包括结果码和封装在Intent中的数据。最后,父Activity通过覆写onActivityResult()方法获取子Activity的返回值。
摘要由CSDN通过智能技术生成

在上一小节中Intent的简介和显式隐式跳转,通过使用startActivity(Intent)方法启动Activity后,启动后的两个Activity之间相互独立,没有任何的关联。
本次学习两个Activity之间的数据传递的问题。通常的情况下,都会有多个Activity的跳转组成一整套的系统,而这些跳转承接关系的Activity之间,需要进行数据的传递。这就是使用Intent通信来实现数据的传递了。

在很多情况下,后启动的Activity是为了让用户对特定信息进行选择,在关闭这个Activity后,用户的选择信息需要返回给未关闭的那个Activity。按照Activity启动的先后顺序,先启动的称为父Activity,后启动的称为子Activity。如果需要将子Activity的部分信息返回给父Activity,则可以使用Sub-Activity的方式去启动子Activity,获取Activity返回值。

获取子Activity的返回值,一般可以分为以下三个步骤
- 以Sub-Activity的方式启动子Activity——父
- 设置子Activity的返回值——子
- 在父Activity中获取返回值——父

以Sub-Activity的方式启动子Activity
  • 调用startActivityForResult(Intent, requestCode)函数
  • 参数Intent用于决定启动哪个Activity
  • 参数requestCode是唯一的标识子Activity的请求码

1、显式启动子Activity的代码如下

    int SUBACTIVITY1 = 1;//在子Activity中设置不同的值
    Intent intent = new Intent(this, SubActivity1.class);
    startActivityForResult(intent, SUBACTIVITY1);

2、隐式启动子Activity的代码如下

    int SUBACTIVITY2 = 2;
    Uri uri = Uri.parse("content://contacts/people");
    Intent intent = new Intent(Intent.ACTION_PICK, uri);
    startActivityForResult(intent, SUBACTIVITY2);
设置子Activity的返回值


  • 在子Activity调用finish()函数关闭前,调用setResult()函数将所需的数据返回给父Activity
  • setResult()函数有两个参数 结果码返回值

结果码表明了子Activity的返回状态,通常为Activity.RESULT_OK或者Activity.RESULT_CANCELED,或自定义的结果码,结果码均为整数类型
返回值用封装在Intent中,子Activity通过Intent将需要返回的数据传递给父Activity。数据主要是Uri形式,可以附加一些额外信息,这些额外信息用Extra的集合表示
下面代码说明如何在子Activity中设置返回值:

    Uri data = Uri.parse("tel:" + tel_number);
    Intent result = new Intent(null, data);
    result.putExtra("address", " ");
    setResult(RESULT_OK, result);
    finish();
在父Activity中获取返回值
  • 当子Activity关闭时,启动它的父Activity的onActivityResult()函数将被调用;如果需要在父Activity中处理子Activity的返回值,则重载此函数即可

此函数的语法如下

public void onActivityResult(int requestCode, int resultCode, Intent data);

第1个参数requestCode,用来表示是哪一个子Activity的返回值
第2个参数resultCode用于表示子Activity的返回状态
第3个参数data是子Activity的返回数据,返回数据类型是Intent。根据返回数据的用途不同,Uri数据的协议则不同,也可以使用Extra方法返回一些原始类型的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值