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 ...
最新文章
- if语句 power query_PowerQuery学习:认识M函数
- 阿里资深技术工程师: 程序员怎样快速成长?
- iOS开发如何实现消息推送机制
- 【算法竞赛学习】二手车交易价格预测-Task4建模调参
- 图像处理 之 同态滤波
- 通过整数索引选择一行熊猫系列/数据框
- 高级音频降噪插件:Klevgrand Brusfri for Mac
- 页面置换算法LRU(最近最少使用)的Java实现
- 联想硬盘保护系统 计算机名 后缀,联想硬盘保护系统,教您联想硬盘保护系统怎么安装...
- 计算机专业朋友圈文案,朋友圈文案合集_用来发微信朋友圈的句子
- tensorflow2 serving
- 安装Windows10后,必做的6项优化,让你的电脑运行更快
- 2021年7月程序员工资统计,平均15302元
- 互联网产品经理的月薪是多少?治好奇!
- 施工建设企业为什么要使用智慧工地数管理系统?
- Centos 安装docker后 deamo 无法启动的问题 解决
- 【今日CV 计算机视觉论文速览 第96期】 8 Apr 2019
- 764. 输出字符串
- 天虹迷你主机装linux,极简天虹迷你主机,小身材高性能,你的生活好搭档
- mac的文件夹服务器,Mac本地服务器
热门文章
- 达梦数据库方言包的问题
- 在JSP中out.print()、out.write()、out.println()的区别
- 安卓bochs模拟linux_Bochs Linux安装
- stm32f103c8t6单片机使用st-link/v2仿真器烧录程序的过程
- 【pwn学习】GOT表劫持
- bShare分享-分享到微信、微博、QQ
- php 语法错误,PHP语法错误?
- ElasticSearch系列18:Mapping 设计指南
- 折线图并添加误差阴影
- adb连接不上手机测试设备