Intent传递基本类型相信大家都十分熟悉,如何传递Object对象或者ArrayList<Object>对象呢?

可以通过:

(1)public Intent putExtra (String name, Serializable value)

(2)public Intent putExtra (String name, Parcelable value)

public Intent putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)

一、通过实现Serializable接口传递

(1)首先让Person继承Serializable接口

  1. package com.example.hellojni;
  2. import java.io.Serializable;
  3. public class Person implements Serializable{
  4. /**
  5. * Auto generate
  6. */
  7. private static final long serialVersionUID = -5053412967314724078L;
  8. private String name;
  9. private int age;
  10. public Person(String name, int age) {
  11. this.name = name;
  12. this.age = age;
  13. }
  14. public String getName() {
  15. return name;
  16. }
  17. public void setName(String name) {
  18. this.name = name;
  19. }
  20. public int getAge() {
  21. return age;
  22. }
  23. public void setAge(int age) {
  24. this.age = age;
  25. }
  26. }
  1. package com.example.hellojni;
  2. import java.io.Serializable;
  3. public class Person implements Serializable{
  4. /**
  5. * Auto generate
  6. */
  7. private static final long serialVersionUID = -5053412967314724078L;
  8. private String name;
  9. private int age;
  10. public Person(String name, int age) {
  11. this.name = name;
  12. this.age = age;
  13. }
  14. public String getName() {
  15. return name;
  16. }
  17. public void setName(String name) {
  18. this.name = name;
  19. }
  20. public int getAge() {
  21. return age;
  22. }
  23. public void setAge(int age) {
  24. this.age = age;
  25. }
  26. }

(2)通过Intent来进行传输,具体方法是:public Intent putExtra (String name, Serializable value)

  1. Intent intent = new Intent(this, OtherActivity.class);
  2. intent.putExtra("person", new Person("bear", 22));
  3. startActivity(intent);
  1. Intent intent = new Intent(this, OtherActivity.class);
  2. intent.putExtra("person", new Person("bear", 22));
  3. startActivity(intent);

 

(3)另外一个Activity中打印值:

  1. Intent intent = getIntent();
  2. Person person = (Person)intent.getSerializableExtra("person");
  3. System.out.println("name:" + person.getName());
  4. System.out.println("age:" + person.getAge());
  1. Intent intent = getIntent();
  2. Person person = (Person)intent.getSerializableExtra("person");
  3. System.out.println("name:" + person.getName());
  4. System.out.println("age:" + person.getAge());

(4)传递ArrayList<Person>:

  1. Intent intent = new Intent(this, OtherActivity.class);
  2. ArrayList<Person> personList= new ArrayList<Person>();
  3. initList(personList);  //初始化personList
  4. intent.putExtra("personList", personList);
  5. startActivity(intent);
  1. Intent intent = new Intent(this, OtherActivity.class);
  2. ArrayList<Person> personList= new ArrayList<Person>();
  3. initList(personList);  //初始化personList
  4. intent.putExtra("personList", personList);
  5. startActivity(intent);

(注意传值类型必须是ArrayList而不能是List。调用的还是public Intent putExtra (String name, Serializable value)这个函数,另外一边获取的时候强制转化为ArrayList<Person>即可)

二、通过实现Parcelable接口传递

同上,Person类实现Parcelable接口即可:

传递Object用:public Intent putExtra (String name, Parcelable value)
传递ArrayList<Object>用:public Intent putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)

(同是序列化的接口,为神马Parcelable分开提供了2个函数,而传Serializable只提供了一个?这里我也很不解。。。)

转自:链接

最新文章

  1. iOS导航控制器常用函数与navigationBar常用属性
  2. js 让浏览器全屏模式的方法launchFullscreen
  3. HDU 1114 完全背包+判断能否装满
  4. Python爬虫预备知识
  5. eclipse美化,全黑eclipse 保护眼睛
  6. 添加Main-Class到manifest中
  7. 读书笔记 effective c++ Item 7 在多态基类中将析构函数声明为虚析构函数
  8. win10 UWP button
  9. 洛谷 P1879 解题报告
  10. cf29d 深搜,dfs序
  11. sprint最后冲刺-out to out
  12. K3CLOUD安装教程
  13. 全景分割pipeline搭建
  14. python 读csv文件时,在csv类型上执行类型转换
  15. Java 8 – Convert Instant to ZonedDateTime
  16. Html页面Dom对象之Element
  17. C++操作mysql方法总结(1)
  18. PMP_PMP考试须知
  19. java学习之浅谈多线程2--线程同步
  20. HP-unix如何生成动态库?

热门文章

  1. (转)HTTP长连接和短连接
  2. 转帖:如何建立与使用 Window setup project
  3. Eclipse CDT “Symbol NULL could not be resolved”
  4. cxGrid 速度
  5. HTML5基本标签、样式
  6. HDU 4793 Collision (解二元一次方程) -2013 ICPC长沙赛区现场赛
  7. UVa1593_Allgnment_Of_Code
  8. js判断是否为ie6以外的浏览器,若是,则调用相应脚本
  9. C++ STL string
  10. 设计模式之Singleton