Android Activity间跳转与传递数据
1 概述
Activity
之间的跳转主要使用
startActivity(Intent intent);
startActivityForResult(Intent intent,int requestCode);
这两个函数,传递数据的话利用Intent
进行传递,负责数据需要配合Bundle
使用。这篇文章讲述了如何利用这两个函数在Activity
之间的跳转以及传递数据。
2 Activity
间跳转
2.1 直接跳转
这里有两个Activity
:FirstActivity
与SecondActivity
,从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
,表示请求码,用于调用Activity
的onActivityResult()
函数。
如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 传递普通数据
传递普通类型的数据直接使用Intent
的putExtra()
即可,putExtra
接受两个参数,第一个是一个String
,表示键,第二个是值,类型可以是byte
、char
、short
、long
等基本类型与这些基本类型组成的数组,当然String
也可以。
比如在FirstActivity
中,传递数据给SecondActivity
:
然后在SecondActivity
中使用getIntent()
获取Intent
后,再从里面获取数据:
如果想从SecondActivity
中返回数据给FirstActivity
,也就是从被调用的Activity
中返回数据,可以使用前面介绍过的setResult()
方法。
其中第二个参数是一个用于存储数据的Intent
,把数据put
进去即可。
最后记得在onActivityResult
做相应的判断处理:
3.2 传递一组数据
当数据的种类变多时,比如混合了int
、String
、byte
、char
等,可以对逐个类型使用putExtra()
,但更好的方法是使用Bundle
。
Bundle
的使用与Intent
类似,也是对于不同的类型采用键值对的添加方法,直接putXXX:
数据添加完毕之后,在intent
中使用putExtras(bundle)
:
然后就可以在SecondActivity
中接收数据了。
首先需要使用getIntent().getExtras()
获取Bundle
,再获取里面的数据。
注意一下获取到的Bundle
有可能为null
,取数据前需要判断一下。
3.3 传递对象
如果想要传递的数据是一个对象怎么办?难道对每一个属性都使用getter再放进去吗?
并不是,Bundle
提供了一个处理序列化对象的方法:
只要对象实现了Serializable
,就可以被Bundle
处理,比如这里有一个测试类Student
:
然后在FirstActivity
中直接new
一个,并使用Bundle
的putSerializable
即可。
接着再SecondActivity
中通过Intent
取出Bundle
后,使用其中的getSerializable()
取出对象,最后使用强制类型转换:
4 源码
- Github
- 码云
Android Activity间跳转与传递数据相关推荐
- android activity之间跳转和数据传递参数,Activity跳转(有返回数据跳转)以及传递参数和回传参数...
使用Bundle在Activity之间传递数据 Bundle类是一个key-value对,是一个final类 两个Activity之间通信可以用Bundle类实现步骤: 新建一个Bundle类 Bun ...
- 【鸿蒙 HarmonyOS】界面跳转 ( Page Ability 的 action 标识 | Page Ability 之间的界面跳转及传递数据 | 鸿蒙工程下创建 Module | 代码示例 )
文章目录 一.Page Ability 的 action 标识 二.Page Ability 之间的界面跳转及传递数据 三.鸿蒙工程下创建 Module 四.代码示例 五.执行效果 参考文档 : Pa ...
- 安卓学习笔记07:事件处理、窗口跳转与传递数据
文章目录 零.学习目标 一.三个基本控件 1.标签控件(TextView) 2.编辑框控件(EditText) 3.按钮控件(Button) 二.安卓事件处理机制 (一)安卓事件处理概述 (二)安卓事 ...
- Android 之 Navigation在目的地之间传递数据、ViewModel
文章目录 Android 之 Navigation在目的地之间传递数据.ViewModel 一.在目的地之间传递数据 1. 定义目的地参数 2.使用 Safe Args 传递安全的数据 3.在目的地之 ...
- Android activity相互跳转
Android activity相互跳转 学习目标: 请你设计一个简单的问卷,界面自行设计,要求有较好的显示效果 功能要求: 1.输入昵称(不能为空) 2.选择性别 3.问卷内容 "你最喜欢 ...
- Android APP间跳转
1. 通过包名启动APP 启动方式,只需知道目标APP包名即可 例如:app1 跳转到app2 app2包名为:com.demo.skipdemo app1启动代码如下: //通过目标APP的包名创建 ...
- 实现android多页面跳转,获取数据操作
准备工具:安卓开发工具 实现页面效果: 1.第一页面:要求停留三秒跳转第二页面 2.第二页面,要求:获取输入的数据点击确定按钮跳转第三页面并数据传入第三页面 3.第三页面:要求:接收第二页面数据显示在 ...
- android 活动传递数据,如何在Android应用程序的“活动”之间传递数据?
我有一种情况,在通过登录页面登录后,每个activity上都会有一个退出button . 点击sign-out ,我将传递已登录用户的session id以便退出. 谁能指导我如何使session i ...
- 微信小程序:页面跳转时传递数据到另一个页面
一.功能描述 页面跳转时,同时把当前页面的数据传递给跳转的目标页面,并在跳转后的目标页面进行展示 二.功能实现 1. 代码实现 test1页面 // pages/test1/test1.js Page ...
最新文章
- android接收不能广播,【11-16求助】急急急,service中无法接收广播!
- 安装python要注意什么_安装python注意事项
- python提速qq邮箱邮件_python3通过qq邮箱发送邮件
- python for informatics_Python for Informatics 第11章 正则表达式一(译)
- opend和open的区别_open与open up的区别
- Redis运行时的10大重要指标
- 【分享】终端命令工具 自动生成vue组件文件以及修改router.js
- vue2 自定义事件 v-model .sync
- 如何对CAD图纸打印输出路径进行修改?
- SQLI-LABS——Page-2 Advanced Injections Less21~Less37
- unison实现文件双向同步
- 基于Ruby 安装 sass 安装出现的错误以及解决
- 计算机演示文稿操作,计算机操作与应用 PowerPoint 演示文稿的设计与制作.ppt
- canvas 圆角矩形填充_canva绘制圆角矩形
- 轻论坛StartBBS、YouBBS、Xiuno对比
- 在Ubuntu下载Python3.6.2并建立软连接
- codeforces 869C The Intriguing Obsession【组合数学+dp+第二类斯特林公式】
- DO-214AC封装尺寸图
- Source Insight 许可证激活与停用
- 如何让SQL Server数据库自动备份并压缩