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

  • 1.引言
  • 2.基本数据传输
  • 3.对象类型数据传输



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

1.引言

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

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

2.基本数据传输

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

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

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

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

android 页面之间如何传递消息 安卓界面传递数据_android

android 页面之间如何传递消息 安卓界面传递数据_android 页面之间如何传递消息_02

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

android 页面之间如何传递消息 安卓界面传递数据_java_03

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




android 页面之间如何传递消息 安卓界面传递数据_android_04


3.对象类型数据传输

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

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

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

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

android 页面之间如何传递消息 安卓界面传递数据_小程序_05

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

小贴士:

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

android 页面之间如何传递消息 安卓界面传递数据_Android_06

序列化学生类

package com.unity3d.lessonapp3;

import java.io.Serializable;

public class Student implements Serializable {
    String id;
    int age;
    String name;
}

android 页面之间如何传递消息 安卓界面传递数据_小程序_07

android 页面之间如何传递消息 安卓界面传递数据_java_08

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

android 页面之间如何传递消息 安卓界面传递数据_java_09



android 页面之间如何传递消息 安卓界面传递数据_Android_10