Android: Activity间的数据传递

示例:

(来源于 Android 编程权威指南第3版)

背景:两个活动,一个是 Quiz 活动,另一个是 Cheat 活动。

题目答案从 Quiz 活动传递给 Cheat 活动,再把用户是否作弊的信息传递给 Quiz 活动。

1.首先我们位于 Quiz 活动,想点击作弊按钮,启动 Cheat 活动。但是在此之前,先创建一个 Intent,Intent 用于活动的交互(四大组件都可以用它来交流的)。Intent 用来告诉 ActivityManager 该启动哪个活动,构造方法为:

Intent Intent(Context packageContext, Class<?> cls)

传入该方法的 Class 类型参数告诉 ActivityManager 应该启动哪个活动;Context 参数告诉 ActivityManager 在哪里可以找到它。简单一点说前者是父活动,后者是子活动。

2.我们需要在 Intent 上放参数,调用

Intent.putExtra(String name, boolean value)

第一个参数是一个字符串,第二个参数是一个布尔型(这里可以换成其他类型)。我们可以看做 Intent 是个 Map,里面存放着键-值对这样的数据,之后调用

void startActivityForResult(Intent intent, int requestCode)

把 Intent 发出去,第一个参数是 Intent 类,第二个参数是 int 类型的 requestcode,Intent 就用之前创建的,而 requestcode 是用来标识是从哪个活动回来的(取值大于等于零),它会被丢到子活动中,之后又从子活动中返回。

3.现在到了子活动,我们需要把用户是否作弊的信息发回去。有两种方法:

public final void setResult(int resultCode)

public final void setResult(int resultCode, Intent data)

resultCode有以下常量:

Activity.RESULT_OK

Activity.RESULT_CANCELED (如需自己定义结果代码,还可使用另一个常量:RESULT_FIRST_USER

如果用户按的是导航栏上的返回键则会返回 Activity.RESULT_CANCELED

我和书上都用了第二种方法,仔细想想第一种就行。照葫芦画瓢,把信息都用 putExtra 丢到 Intent 上。

4.回到父活动,父活动调用

protected void onActivityResult(int requestCode, int resultCode, Intent data)

再根据自己用 resultCode 还是 Intent 传递的信息做判断,进行下一步操作。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值