Android学习——Intent传递复杂数据类型
来源:互联网 发布:windows安装服务 编辑:程序博客网 时间:2024/06/05 15:02
目标:单击Button实现从MainActivity跳转到OtherActivity,并携带一个Person类对象,在OtherActiviy中打印出来。
具体实现如下:
Dog类,实现了Serializable接口:
public class Dog implements Serializable{ private String name; private int age; public Dog(String name, int age) { this.name = name; this.age = age; } public Dog() { } @Override public String toString() { return "Dog{" + "name='" + name + '\'' + ", age=" + age + '}'; }}
Person类,实现了Parcelable接口:
public class Person implements Parcelable{ private String name; private Dog dog; private List<String> hobbys; private List<Dog> dogs; public Person() { } public Person(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } public List<String> getHobbys() { return hobbys; } public void setStrs(List<String> hobbys) { this.hobbys = hobbys; } public List<Dog> getDogs() { return dogs; } public void setDogs(List<Dog> dogs) { this.dogs = dogs; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", dog=" + dog + ", hobbys=" + hobbys + ", dogs=" + dogs + '}'; } public static final Creator<Person> CREATOR = new Creator<Person>() { @Override public Person createFromParcel(Parcel parcel) { Person person = new Person(); //从parcel中读取数据封装成Person对象返回 //注意:读的顺序一定要与写的顺序一致 person.name = parcel.readString(); person.dog = (Dog) parcel.readSerializable(); List<String> list = new ArrayList<>(); parcel.readStringList(list); person.hobbys = list; person.dogs = parcel.readArrayList(this.getClass().getClassLoader()); return person; } @Override public Person[] newArray(int i) { return new Person[0]; } }; @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int i) { //写数据:记住顺序 parcel.writeString(name); parcel.writeSerializable(dog); parcel.writeStringList(hobbys); parcel.writeList(dogs); }}
MainActivity中按钮监听事件:
//实例化Person对象Person person = new Person("韩梅梅");//设置String集合List<String> hobbys = new ArrayList<>();hobbys.add("吃饭");hobbys.add("睡觉");hobbys.add("打豆豆");person.setStrs(hobbys);//设置对象Dog xiaohei = new Dog("小黑",3);person.setDog(xiaohei);//设置对象集合Dog xiaohuang = new Dog("小黄",2);Dog dahuang = new Dog("大黄",5);List<Dog> cats = new ArrayList<Dog>();cats.add(xiaohuang);cats.add(dahuang);person.setDogs(cats);Intent intent = new Intent(this,OtherActivity.class);//传递person对象intent.putExtra("per",person);this.startActivity(intent);
OtherActivity从Intent中取出数据打印:
//拿出数据,并打印Intent intent= this.getIntent();Person person = intent.getParcelableExtra("per");System.out.println("name = " + person.getName());System.out.println("dog = " + person.getDog());System.out.println("hobbys = " + person.getHobbys());System.out.println("dogs = " + person.getDogs());
从控制台查看输出结果:
0 0
- Android学习——Intent传递复杂数据类型
- Android例子—Intent之复杂数据的传递
- Android学习——Intent传递数据
- Android studio上面学习Aidl实现复杂数据类型的传递
- AIDL进程间传递复杂数据类型—AIDL传递android.os.Parcelable接口
- Android学习日记(yzy):intent传递的多种数据类型
- Android基础入门教程——4.5.2 Intent之复杂数据的传递
- Android使用Intent传递复杂参数及复杂参数列表
- Android使用Intent传递复杂参数及复杂参数列表
- Android端调用c#端的webservice——复杂数据类型传递
- android学习笔记——使用Intent传递对象
- android基础学习6——intent实现数据传递
- android 在activity之间传递复杂数据类型
- android 用Parcelable传递复杂数据类型
- android 用Parcelable传递复杂数据类型
- android 用Parcelable传递复杂数据类型
- Android继承Parcelable接口传递复杂数据类型
- android 用Parcelable传递复杂数据类型
- C++的shared_ptr智能指针的使用示例
- 20国创意精英 拥抱“设计+”时代-2015成功设计大赛颁奖典礼在沪圆满举行
- Caused by: java.lang.IllegalArgumentException: addChild: Child name 'localhost' is not unique
- android中color的用法及十六进制编码大全
- GDAL百分比剪辑拉伸,拉伸算法可以并行,但是RasterIO并行会出错误。
- Android学习——Intent传递复杂数据类型
- hdu 1520 Anniversary party 树形DP
- 判断一颗二叉树是否为二叉排序树(java实现)
- versions and build in xcode
- 关闭 DefaultHttpClient 页面(非连接)
- zookeeper Error contacting service. It is probably not running错误
- Facebook第三方登陆
- Spinner类OnItemSelected回调流程
- struts2 xml validator 校验