『Android基础入门』如何实现界面间的数据传输(基础数据和对象类型数据)

243 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

👨‍🎓作者简介:一位喜欢写作,计科专业的大二菜鸟

🏡个人主页:starry陆离

🕒首发日期:2022年6月14日星期二

🌌上期文章:『Android基础入门』如何实现页面的跳转(任务栈机制)

📚订阅专栏:『Android基础入门』 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦


@TOC 注意:不是教程只是笔记,如有错误欢迎批评指正

1.引言

此笔记是承上启下的,关于为页面添加响应的内容请详看 【Android】如何为组件添加响应

关于如何实现页面的跳转详看 【Android】如何实现页面的跳转

2.基本数据传输

页面间的数据传输是通过intent.putExtra()方法实现的

如下可见它重载了很多方,各种数据类型的传输都有封装实现,这里就浅拿字符型数据举个栗子吧

putExtra()与java中的HashMap的put()方法有诸多相似,它也有两个参数,前者为值名,后者为值

值名作为唯一的区分标志用于在其他页面区分不同的值,而值就是要传输的内容

image-20220422101605976

image-20220422102408686

在新界面的Activity中捕获传输来内容,并将其设置在文本组件上

Snipaste_2022-04-22_10-26-41

可见值已经成功传入新的界面了,并设置成功

image-20220422102849272

3.对象类型数据传输

在项目开发中,我们往往不是传输单个的,没有关联的数据,而是一组相互有联系的数据,比如我们要将一个学生的学号,年龄,姓名等等信息传过去,用基本数据类型传输就不再合适

可以看到,putExtra()方法有重载一个第二个参数为Serializable value的用法

这就又牵涉java当中的序列化的知识了,这里不铺开讲述,java将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的。

序列化的作用就是:将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。

image-20220422103500702

那么我们创建一个学生类并继承Serializable接口实现序列化

小贴士:

这里只是创建一个java类,并不是创建Activity,注意两者区别

image-20220422104328399

序列化学生类

 package com.unity3d.lessonapp3;
 ​
 import java.io.Serializable;
 ​
 public class Student implements Serializable {
     String id;
     int age;
     String name;
 }
 ​

Snipaste_2022-04-22_10-48-09

image-20220422105142950

在新界面里,我们捕获到student对象,并将它的属性拼接为一个字符串显示在文本控件上

image-20220422105654898