1 概述

Activity之间的跳转主要使用

startActivity(Intent intent);
startActivityForResult(Intent intent,int requestCode);

这两个函数,传递数据的话利用Intent进行传递,负责数据需要配合Bundle使用。这篇文章讲述了如何利用这两个函数在Activity之间的跳转以及传递数据。

2 Activity间跳转

2.1 直接跳转

这里有两个ActivityFirstActivitySecondActivity,从FirstActivity中跳转到SecondActivity中只需要一个startActivity()即可:

startActivity(new Intent(this,SecondActivity.class));

一般需要在SecondActivity中加上finish()函数,表示这个Activity结束,比如这里直接在SecondActivity的按钮事件里面加上了finish()

2.2 回调

很多情况下需要在FirstActivity跳转到SecondActivity后,在SecondActivity进行相应的操作,如更新数据之类,然后返回FirstActivity,通知FirstActivity执行某些操作,这时候就需要使用startActivityForResult()

startActivityForResult有两个参数,一个是Intent,表示将要跳转的Activity,一个是requestCode,表示请求码,用于调用ActivityonActivityResult()函数。

FirstActivity中:

startActivityForResult(new Intent(this,SecondActivity.class),11);

这里11就是请求码,然后在SecondActivity中,使用setResult()函数:

setResult(22,new Intent().putExtra("str","from second activity"));

setResult()接受两个参数,第一个参数表示resultCode,从这个SecondActivity返回的结果码,另一个Intent,表示要返回给FirstActivity的数据。

最后在FirstActivity中重载onActivityResult()

onActivityResult中判断请求码与结果码后进行相应操作。

3 Activity间传递数据

3.1 传递普通数据

传递普通类型的数据直接使用IntentputExtra()即可,putExtra接受两个参数,第一个是一个String,表示键,第二个是值,类型可以是bytecharshortlong等基本类型与这些基本类型组成的数组,当然String也可以。

比如在FirstActivity中,传递数据给SecondActivity

然后在SecondActivity中使用getIntent()获取Intent后,再从里面获取数据:

如果想从SecondActivity中返回数据给FirstActivity,也就是从被调用的Activity中返回数据,可以使用前面介绍过的setResult()方法。

其中第二个参数是一个用于存储数据的Intent,把数据put进去即可。

最后记得在onActivityResult做相应的判断处理:

3.2 传递一组数据

当数据的种类变多时,比如混合了intStringbytechar等,可以对逐个类型使用putExtra(),但更好的方法是使用Bundle

Bundle的使用与Intent类似,也是对于不同的类型采用键值对的添加方法,直接putXXX:

数据添加完毕之后,在intent中使用putExtras(bundle)

然后就可以在SecondActivity中接收数据了。

首先需要使用getIntent().getExtras()获取Bundle,再获取里面的数据。

注意一下获取到的Bundle有可能为null,取数据前需要判断一下。

3.3 传递对象

如果想要传递的数据是一个对象怎么办?难道对每一个属性都使用getter再放进去吗?

并不是,Bundle提供了一个处理序列化对象的方法:

只要对象实现了Serializable,就可以被Bundle处理,比如这里有一个测试类Student

然后在FirstActivity中直接new一个,并使用BundleputSerializable即可。

接着再SecondActivity中通过Intent取出Bundle后,使用其中的getSerializable()取出对象,最后使用强制类型转换:

4 源码

  • Github
  • 码云

Android Activity间跳转与传递数据相关推荐

  1. android activity之间跳转和数据传递参数,Activity跳转(有返回数据跳转)以及传递参数和回传参数...

    使用Bundle在Activity之间传递数据 Bundle类是一个key-value对,是一个final类 两个Activity之间通信可以用Bundle类实现步骤: 新建一个Bundle类 Bun ...

  2. 【鸿蒙 HarmonyOS】界面跳转 ( Page Ability 的 action 标识 | Page Ability 之间的界面跳转及传递数据 | 鸿蒙工程下创建 Module | 代码示例 )

    文章目录 一.Page Ability 的 action 标识 二.Page Ability 之间的界面跳转及传递数据 三.鸿蒙工程下创建 Module 四.代码示例 五.执行效果 参考文档 : Pa ...

  3. 安卓学习笔记07:事件处理、窗口跳转与传递数据

    文章目录 零.学习目标 一.三个基本控件 1.标签控件(TextView) 2.编辑框控件(EditText) 3.按钮控件(Button) 二.安卓事件处理机制 (一)安卓事件处理概述 (二)安卓事 ...

  4. Android 之 Navigation在目的地之间传递数据、ViewModel

    文章目录 Android 之 Navigation在目的地之间传递数据.ViewModel 一.在目的地之间传递数据 1. 定义目的地参数 2.使用 Safe Args 传递安全的数据 3.在目的地之 ...

  5. Android activity相互跳转

    Android activity相互跳转 学习目标: 请你设计一个简单的问卷,界面自行设计,要求有较好的显示效果 功能要求: 1.输入昵称(不能为空) 2.选择性别 3.问卷内容 "你最喜欢 ...

  6. Android APP间跳转

    1. 通过包名启动APP 启动方式,只需知道目标APP包名即可 例如:app1 跳转到app2 app2包名为:com.demo.skipdemo app1启动代码如下: //通过目标APP的包名创建 ...

  7. 实现android多页面跳转,获取数据操作

    准备工具:安卓开发工具 实现页面效果: 1.第一页面:要求停留三秒跳转第二页面 2.第二页面,要求:获取输入的数据点击确定按钮跳转第三页面并数据传入第三页面 3.第三页面:要求:接收第二页面数据显示在 ...

  8. android 活动传递数据,如何在Android应用程序的“活动”之间传递数据?

    我有一种情况,在通过登录页面登录后,每个activity上都会有一个退出button . 点击sign-out ,我将传递已登录用户的session id以便退出. 谁能指导我如何使session i ...

  9. 微信小程序:页面跳转时传递数据到另一个页面

    一.功能描述 页面跳转时,同时把当前页面的数据传递给跳转的目标页面,并在跳转后的目标页面进行展示 二.功能实现 1. 代码实现 test1页面 // pages/test1/test1.js Page ...

最新文章

  1. android接收不能广播,【11-16求助】急急急,service中无法接收广播!
  2. 安装python要注意什么_安装python注意事项
  3. python提速qq邮箱邮件_python3通过qq邮箱发送邮件
  4. python for informatics_Python for Informatics 第11章 正则表达式一(译)
  5. opend和open的区别_open与open up的区别
  6. Redis运行时的10大重要指标
  7. 【分享】终端命令工具 自动生成vue组件文件以及修改router.js
  8. vue2 自定义事件 v-model .sync
  9. 如何对CAD图纸打印输出路径进行修改?
  10. SQLI-LABS——Page-2 Advanced Injections Less21~Less37
  11. unison实现文件双向同步
  12. 基于Ruby 安装 sass 安装出现的错误以及解决
  13. 计算机演示文稿操作,计算机操作与应用 PowerPoint 演示文稿的设计与制作.ppt
  14. canvas 圆角矩形填充_canva绘制圆角矩形
  15. 轻论坛StartBBS、YouBBS、Xiuno对比
  16. 在Ubuntu下载Python3.6.2并建立软连接
  17. codeforces 869C The Intriguing Obsession【组合数学+dp+第二类斯特林公式】
  18. DO-214AC封装尺寸图
  19. Source Insight 许可证激活与停用
  20. 如何让SQL Server数据库自动备份并压缩

热门文章

  1. 关于《白鹿原》的所思所想
  2. 推荐你的最佳睡眠时间
  3. mapreduce求共同好友
  4. 2015年微信公众号媒体价值研究报告
  5. 常见的三维点云数据下载链接,自己整理+网上收集
  6. 车库门遥控器(拷贝型)
  7. 关于HTML5的audio标签和video标签删除下载图标
  8. 回归预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络多输入单输出
  9. android attributeset 工具类,android attributeset总结
  10. 21.shell语言之if条件判断语句