关于 android Intent 传对象和对象数组的一些操作
来源:互联网 发布:mac好用的翻墙 编辑:程序博客网 时间:2024/06/06 08:34
直接开正题,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;@Overridepublic int describeContents() {return 0;}@Overridepublic 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>(){@Overridepublic AA createFromParcel(Parcel source) {AA app= new AA();app.a = source.readString();app.aa = source.readString();app.aaa = source.readString();return app;}@Overridepublic 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 传对象和对象数组的一些操作
- 关于json对象和数组的访问的一些问题
- jquery操作数组和对象的一些常用函数
- 【Android】Intent传递对象数组
- Android---Intent传递对象、对象数组
- js-对象与数组的一些操作
- android intent传对象
- Android中关于Intent filter和Intent的一些用法。
- android的intent对象的一些调用activity的方法
- Android中关于使用Intent进行窗体切换,并且传值和自定义类的对象详解
- android 关于intent传递类对象的几种方式
- android Intent 对象的传递
- string对象的初始化和一些操作
- Android之Intent传对象
- Android中intent传递对象和Bundle的用法
- Android中intent传递对象和Bundle的用法
- Android中intent传递对象和Bundle的用法
- C语言的文件操作----小V
- python清除svn关联
- (2)链路层
- XMPP协议实现原理介绍
- LTE射频拉远单元数字中频方案(四)
- 关于 android Intent 传对象和对象数组的一些操作
- zoj3329 概率dp
- mysql Lvs+Keepalived+Mysql单点写入主主同步
- 你们公司的产品[zhuan]
- MySQL集群节点参数说明
- 利用PHPExcel导出数据到excel
- 异常处理的实现
- exit.s
- hdu-2033-人见人爱A+B