android学习杂记(1)--Intent传递对象数据
来源:互联网 发布:防蹭网软件手机版 编辑:程序博客网 时间:2024/05/04 12:20
Intent意图不仅可以传递基本数据类型的数据,也可以传递对象数据。android提供了两种传递对象的方式:对象数据的序列化和对象数据的分解。
一、数据的序列化
使将要传递的对象类实现Seriazliable接口。
/*1.使将要传递的对象实现Serializable接口,实现序列化*/public class Person implements Serializable { private int age; private String name; public int getAge() { return age; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public void setName(String name) { this.name = name; }}
/*2.发送对象数据*/Intent intent = new Intent(this,SecondActivity.class);Person p = new Person();p.setAge(12);p.setName("zyj");intent.putExtra("person",p);
/*3.得到Intent对象并获取序列化数据*/ Intent intent = getIntent(); Person person = (Person)intent.getSerializableExtra("person"); int age = person.getAge(); String name = person.getName();
二、数据对象的分解
/*1.使将要传递的类实现Parceable接口并为其成员变量提供相应的get和set方法*/public class Person implements Parcelable { private String name; private int age; public String getName() { return name; } public int getAge() { return age; } public void setName(String name) { this.name = name; } public void setAge(int age) { this.age = age; } //复写describeContents()方法,返回0 @Override public int describeContents() { return 0; } //复写writerToParcel方法,将对象的成员变量数据使用Parcel对象输出 @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeInt(age); } //创建变量CREATOR,格式为固定格式,泛型的类型就是我们要发送的对象数据的类名。 public static final Creator<Person> CREATOR = new Creator<Person>(){ //上文中用Parcel对象写入,现在用Parecl对象读取。注意本处读的顺序必须和上面写的顺序一致 @Override public Person createFromParcel(Parcel source) { Person person = new Person(); person.name = source.readString(); person.age = source.readInt(); return person; } //复写newArray方法,格式如下 @Override public Person[] newArray(int size) { return new Person[size]; } };}
//2.发送对象//设置数据对象Person person = new Person();person.setName("zyj");person.setAge(23);//设置意图并发送数据Intent intent = new Intent(this,SecondActivity.class);intent.putExtra("person",person); startActivity(intent);
/*3.获取到发送的对象数据*/ Intent intent = getIntent(); Person person = (Person) intent.getParcelableExtra("person"); String name = person.getName();int age = person.getAge();
上面两种方式操作不同,若无特殊要求,建议使用Parcel方式实现对象的传递,虽然书写麻烦但是性能好。Serializable接口为android重量级组件,较为耗费性能。
0 0
- android学习杂记(1)--Intent传递对象数据
- android学习之intent对象传递类
- Android学习笔记----使用Intent传递对象
- android学习 关于用intent 传递数据
- Android学习——Intent传递数据
- Android Intent传递对象
- Android Intent 传递对象
- Android Intent传递对象
- [Android] Intent 传递对象
- android Intent 传递对象
- Android Intent传递对象
- Android - Intent - 传递数据
- Android - Intent - 传递数据
- Android Intent传递数据
- android intent传递数据
- Android学习笔记3 使用Intent传递复杂的数据(对象,List<Object>等)
- 使用Intent传递对象数据
- Android中Intent传递自定义对象类型的数据
- Android基础之用Eclipse搭建Android开发环境和创建第一个Android项目(Windows平台)
- LeetCode 题解(88): Copy List with Random Pointer
- 一些开源软件的列表
- SQL中IN和EXISTS用法的区别,sql中exists,not exists的用法
- [智力题]1395: Planting Tree
- android学习杂记(1)--Intent传递对象数据
- call and apply
- LeetCode_Reverse Linked List
- html基础学习之不同浏览器的视频播放效果
- android中menu创建及相应
- $(document).ready()和window.onload的区别
- Java获取文件夹中所有文件
- 实现文件按时间排序功能
- MFC EDIT控件多行滚动