关于 android Intent 传对象和对象数组的一些操作
直接开正题,Intent传递值就是平常那些很简单的,接下来介绍传递 对象,和 对象数组
1 .intent 传递自定义的 对象 -
实体类继承 Serializable
public class AA implements Serializable{ public String a;
public String aa;
public String aaa; }
intent塞入数据端
AA a = new AA();
a.a="a";
a.aa ="aa";
a.aaa = "aaa"; Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);
Bundle bu = new Bundle();
bu.putSerializable("enty", a);
in.putExtras(bu);
startActivity(in);
intent 接收数据端
AA a =(AA)this.getIntent().getExtras().getSerializable("enty");
System.out.println("a.a ="+ app.a);
System.out.println("a.aa ="+ app.aa);
System.out.println("a.aaa ="+ app.aaa);
实体类类继承 Parcelable(简单介绍一下:
1.什么是Parcelable ?
Parcelable,定义了将数据写入Parcel,和从Parcel中读出的接口。一个实体(用类来表示),如果需要封装到消息中去,就必须实现这一接口,实现了这一接口,该实体就成为“可打包的”了。
2.Parcelable 传递对象
Android序列化对象主要有两种方法:
1.1实现Serializable接口是JavaSE本身就支持的;
1.2实现Parcelable接口,Parcelable是Android特有的功能,效率比实现Serializable接口高,像用于Intent数据传递也都支持,而且还可以用在进程间通信(IPC),
除了基本类型外,只有实现了Parcelable接口的类才能被放入Parcel中。
)
Parcelable的接口的定义:
public interface Parcelable {
//内容描述接口
public int describeContents();
//写入接口函数,打包
public void writeToParcel(Parcel dest, int flags);
//1.读取接口,目的是要从Parcel中构造一个实现了Parcelable的类的实例处理。因为实现类在这里还是不可知的,所以需要用到模板的方式,继承类名通过模板参数传入。
//2.为了能够实现模板参数的传入,这里才定义CREATOR嵌入接口,有两个接口函数分别返回单个和多个继承类实例。
public interface Creator<T> {
public T createFromParcel(Parcel source);
public T[] newArray(int size);
}
public class AA implements Parcelable{ public String a;
public String aa;
public String aaa; @Override
public int describeContents() {
return 0;
} @Override
public void writeToParcel(Parcel parcel, int flags) {
//序列化对象,必须按照声明顺序
parcel.writeString(a);
parcel.writeString(aa);
parcel.writeString(aaa); }
//必须实现这个接口,它的作用是从 percel中读出来数据,顺序必须按照声明顺序
public static final Parcelable.Creator<AA> CREATOR = new Creator<AA>(){
@Override
public AA createFromParcel(Parcel source) {
AA app= new AA();
app.a = source.readString();
app.aa = source.readString();
app.aaa = source.readString();
return app;
}
@Override
public AA[] newArray(int size) {
return new AA[size];
} };
}
intent塞入数据端
AA a = new AA();
a.a="a";
a.aa ="aa";
a.aaa = "aaa"; Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);
Bundle bu = new Bundle();
bu.putParcelable("enty", a);
in.putExtras(bu);
startActivity(in);
接收数据端
// 可以这样app =(AA)this.getIntent().getParcelableExtra("enty");
//也可以这样写,上面的也是
app =(AA)this.getIntent().getExtras().getParcelable("enty");
System.out.println("a.a ="+ app.a);
System.out.println("a.aa ="+ app.aa);
System.out.println("a.aaa ="+ app.aaa);
2。 下来是 自定义对象 数组传递
实体类类继承 Parcelable
intent塞入数据端
List<AA> list_aa =new ArrayList<AA>();
AA a = new AA();
a.a="a";
a.aa ="aa";
a.aaa = "aaa"; AA a1 = new AA();
a1.a="a1";
a1.aa ="aa1";
a1.aaa = "aaa1"; list_aa.add(a);
list_aa.add(a1); Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);
Bundle bu = new Bundle();
bu.putParcelableArrayList("list", (ArrayList<? extends Parcelable>) list_aa); //---
in.putExtras(bu);
startActivity(in);
接收list数据端
List<AA> aa =this.getIntent().getExtras().getParcelableArrayList("list"); for (AA aa2 : aa) {
System.out.println("list_a.a = "+ aa2.a);
System.out.println("list_a.aa = "+ aa2.aa);
System.out.println("list_a.aaa = "+ aa2.aaa);
System.out.println("================================="); }
关于 android Intent 传对象和对象数组的一些操作的更多相关文章
- Android Intent 基本使用及对象构成
Intent基本使用 Intent可以理解为不同组件通信的媒介或者信使. Intent可以启动一个Activity,也可以启动一个Service,还可以发起一个广播Broadcast. 具体方法如下表 ...
- android intent 传递list或者对象
(转:http://www.cnblogs.com/lee0oo0/archive/2012/09/24/2699805.html) 方法一: 如果单纯的传递List<String> 或者 ...
- Android intent传递list或对象
方法一: 如果单纯的传递List<String> 或者List<Integer>的话 就可以直接使用 Java代码 intent.putStringArrayListExtra ...
- android intent 传数据
1. 基本数据类型 Intent intent = new Intent(); intent.setClass(activity1.this, activity2.class); //描述起点和目标 ...
- 在Android中通过Intent使用Bundle传递对象
IntentBundle传递对象SerializableParcelable Android开发中有时需要在应用中或进程间传递对象,下面详细介绍Intent使用Bundle传递对象的方法.被传递的对象 ...
- intent传值传对象跳转
intent传值传对象跳转 1.传值 //原activity中存入一个字段 intent = new Intent(From.this, To.class); intent.putExtra(&quo ...
- Intent之对象传递(Parcelable传递对象和对象集合)
接着上一篇文章,以下我们讨论一下怎样利用Parcelable实现Intent之间对象的传递 一.实现对象传递 首先创建User.java实现Parcelable接口: package org.yayu ...
- android中用Intent传数据,如果用传递的是一个类,就将类实现Parcelable接口
Parcelable,内存单位,跨进程使用,或者intent传递对象的时候使用.android中用Intent传数据,如果用传递的是一个对象,就将对象实现Parcelable接口,而不是将对象序列化. ...
- uniapp中拿到base64转blob对象,或base64转bytes字节数组,io操作写入字节流文件bytes
1. uniAPP中拿到附件的base64如何操作,如word文件 /*** 实现思路:* 通过native.js的io操作创建文件,拿到平台绝对路径* 再通过原生类进行base64解码,拿到字节流b ...
随机推荐
- POJ2553-The Bottom of a Graph
id=2553">主题链接 题意:求解Bottom(G).即集合内的点能够互相到达. 思路:有向图的强连通.缩点,找出出度为0的点,注意符合的点要按升序输出. 代码: #include ...
- linux shadow破解
主要学习了下linux /etc/shadow文件中密码的破解:学习了hashcat工具的简单实用,具体的可以参加:https://samsclass.info/123/proj10/p12-hash ...
- C#格式化成小数
datagridview某列格式化成两位小数 ............................................................................. ...
- SQL整理3
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...
- 深入理解CSS3 Animation 帧动画(转)
CSS3我在5年之前就有用了,包括公司项目都一直在很前沿的技术. 最近在写慕课网的七夕主题,用了大量的CSS3动画,但是真的沉淀下来仔细的去深入CSS3动画的各个属性发现还是很深的,这里就写下关于帧动 ...
- 制作与使用静态链接库(.lib)文件
(一)制作.lib文件 (1)打开vs,选择“新建项目”,选择“Visual C++“,选择”Win32 控制台应用程序“. (2)点击”确定“,点击”下一步“,设置如下 (3)点击”完成“,然后就可 ...
- 【grunt整合版】学会使用grunt打包前端代码
grunt 是一套前端自动化工具,一个基于nodeJs的命令行工具,一般用于:① 压缩文件② 合并文件③ 简单语法检查 对于其他用法,我还不太清楚,我们这里简单介绍下grunt的压缩.合并文件,初学, ...
- linux下/proc/sysrq-trigger文件的功能
/proc/sysrq-trigger该文件能做些什么事情呢? # 立即重新启动计算机 (Reboots the kernel without first unmounting file system ...
- 16.java.lang.InterruptedException
java.lang.InterruptedException 被中止异常 当某个线程处于长时间的等待.休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常 ...
- Delphi中TFlowPanel实现滚动条效果
由于TFlowPanel中没有设置滚动条的相关属性.所以我们只好另辟溪径.再加一个tscrollbox来实现. 具体操作如下: 1,先添加一个Tscrollbox,设置其align为alclient. ...