关于 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 ...
随机推荐
- Android 常用代码大集合 [转]
[Android]调用字符串资源的几种方法 字符串资源的定义 文件路径:res/values/strings.xml 字符串资源定义示例: <?xml version="1.0&q ...
- C# GridView弹出窗口新增行 删除行
<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="true" ...
- T-SQL查询:三值逻辑
1. 三值逻辑:TRUE / FALSE / UNKNOWN 2. 一个缺失的值(NULL)和另一个值进行比较,逻辑结果是UNKNOWN UNKOWN:NULL > 42 / NULL = NU ...
- Sublime Text 增加CoffeeScript、Jade and Stylus syntax高亮
切换到Sublime Text Packages 目录: Liunx系统: cd ~/Library/Application\ Support/Sublime\ Text\ /Packages win ...
- BZOJ 4016: [FJOI2014]最短路径树问题( 最短路 + 点分治 )
先跑出最短路的图, 然后对于每个点按照序号从小到大访问孩子, 就可以搞出符合题目的树了. 然后就是经典的点分治做法了. 时间复杂度O(M log N + N log N) -------------- ...
- NodeJS + express访问html、css、JS等静态资源文件
原先做前端开发时都是用XAMPP或LAMP,把HTML.CSS.JS等前端资源放到htdocs下,测试自己的前端代码,但有些不方便的地方是,在调用Ajax请求后无法模拟请求返回的数据,最近学了点Nod ...
- 关于RSA加密
RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密. RSA的算法涉及三个参数,n.e1.e2. 其中,n是两个大质数p.q的积,n的二进制 ...
- 搞了一个独立博客,请各位光临pingworld.cn
嘿嘿,每次在一个大网站上建立自己的博客后总是没有动力持续更新下去,回想其原因很大是因为没有一个自己的地盘,懒得维护!还有一个原因就是自己也没有什么干货值得跟大家分享. 随着工作的时日见长,有了各种各样 ...
- MySQL中用decimal的原因
原因:float保存的值有可能是这个值的近似值,而不是这个值的真实值.如 0.1在二进制中是没有办法保存真实值的. 下面是例子: 第一步:建表: create table t2(x float,y d ...
- SQL Server Service Borker 1
1.消息类型定义: 消息类型,是信息交换的模板.create message type message_type_name validattion = well_formed_xml; 2.约定定义: ...