Android---Intent传递对象、对象数组
2016-03-20 01:06
411 查看
Android有两种方式传递对象,分别让对象实现Serializable接口和Parceable接口。
用Serializable传递对象:bundle.putSerializable(“key”,object); 接收对象: (Object)getIntent().getSerializableExtra(“key”);
用Parceable传递对象: bundle.putParcelable(“key”,object);接收对象:(Object)getIntent().getParcelableExtra(“key”);
下面举例说明:
1. 新建Student类实现Serializable接口
2.新建Teacher类实现Parceable接口
3.使用Serializable传递、接收对象的方法:
4.使用Parceable传递、接收对象的方法:
5.使用Serializable传递、接收对象数组的方法:
6.传递、接收普通数组方法(String int):
运行截图:
用Serializable传递对象:bundle.putSerializable(“key”,object); 接收对象: (Object)getIntent().getSerializableExtra(“key”);
用Parceable传递对象: bundle.putParcelable(“key”,object);接收对象:(Object)getIntent().getParcelableExtra(“key”);
下面举例说明:
1. 新建Student类实现Serializable接口
public class Student implements Serializable { private static final long serialVersionUID = 1L; private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
2.新建Teacher类实现Parceable接口
public class Teacher implements Parcelable { private int id; private String department; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getDepartment() { return department; } public void setDepartment(String department) { this.department = department; } @Override public int describeContents() { return 0; } // 注意这里的write顺序跟下面的read顺序一定要一样 @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(id); dest.writeString(department); } public static final Parcelable.Creator<Teacher> CREATOR = new Creator<Teacher>() { @Override public Teacher createFromParcel(Parcel source) { Teacher teacher = new Teacher(); teacher.id = source.readInt(); teacher.department = source.readString(); return teacher; } @Override public Teacher[] newArray(int size) { return new Teacher[size]; } }; }
3.使用Serializable传递、接收对象的方法:
private void serializable_pass() { Student stu = new Student(); stu.setId(1000); stu.setName("小明"); Intent intent = new Intent(MainActivity.this,SerializableActivity.class); Bundle bundle = new Bundle(); bundle.putSerializable("serial", stu); intent.putExtras(bundle); startActivity(intent); }
Student stu = (Student) getIntent().getSerializableExtra("serial");
4.使用Parceable传递、接收对象的方法:
private void parceable_pass() { Teacher teacher = new Teacher(); teacher.setId(1001); teacher.setDepartment("计算机科学与技术"); Intent intent = new Intent(MainActivity.this, ParceableActivity.class); Bundle bundle = new Bundle(); bundle.putParcelable("parceable", teacher); intent.putExtras(bundle); startActivity(intent); }
Teacher teacher = (Teacher) getIntent().getParcelableExtra("parceable");
5.使用Serializable传递、接收对象数组的方法:
private void serializableList_pass() { List<Student> list = new ArrayList<>(); Student stu1 = new Student(); stu1.setId(1000); stu1.setName("小明"); Student stu2 = new Student(); stu2.setId(1002); stu2.setName("小红"); list.add(stu1); list.add(stu2); Intent intent = new Intent(MainActivity.this, ObjectListActivity.class); //把list强制类型转换成Serializable类型 intent.putExtra("objectList", (Serializable) list); startActivity(intent); }
List<Student> stu = (List<Student>) getIntent().getSerializableExtra( "objectList");
6.传递、接收普通数组方法(String int):
private void stringList_pass() { ArrayList<String> list = new ArrayList<>(); list.add("string1"); list.add("string2"); Intent intent = new Intent(MainActivity.this, StringListActivity.class); intent.putStringArrayListExtra("stringList", list); startActivity(intent); }
ArrayList<String> list = getIntent().getStringArrayListExtra( "stringList");
//传递int型数组 intent.putIntegerArrayListExtra(key, list); //接收int型数组 list =(ArrayList<Integer>) getIntent().getIntegerArrayListExtra(key);
运行截图:
源码下载
相关文章推荐
- 向Android Studio中添加jar包
- Android -BroadcastReceiver广播机制
- Android Caused by: java.lang.IllegalArgumentException: column '_id' does not exist
- android中fragment实现
- android学习笔记——使用Intent传递对象
- android学习笔记——灵活使用Log打印日志
- android学习笔记——全局获取Context的技巧
- android学习笔记——Localtion服务之LocationManager
- android学习笔记——Intent的解析(Intent的隐式调用)
- android学习笔记——回调机制
- android布局
- Android规范文档
- android数据传递
- ListView嵌套ListView缓存失效问题
- Android Studio从硬盘上彻底删除Project项目
- Android 存储中的内部存储和外部存储
- android Realm数据操作类详解
- Android Studio添加依赖时出现“Manifest merger failed”
- Android开发之通过反射获取到Android隐藏的方法
- Mac和Windows上Android Studio常用的快捷键