一、简介

开发过程中,Activity之间传递数据是必不可少的,Android中使用Intent和Bundle作为数据载体,在Activity之间传递,对于基础数据类型,Bundle已经提供了相关的put、set方法,而作为自定义的类型则需要有特别的要求。

自定义类型,想要使用Bundle传递时,需要满足特定的条件,即该类型需要实现Serializable接口或Parcelable接口。

注:如果目标对象中包含其他对象,则被包含的对象也需要实现Serializable接口或Parcelable接口。

二、代码实现

我们以Serializable接口为例:

1、传递对象

1)自定义对象,实现Serializable接口

package com.davis.drawtrangle;import java.io.Serializable;public class Person implements Serializable{private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

2)使用Intent传递对象

 private void clearDrawView(){Intent intent = new Intent(MainActivity.this, SecondActivity.class);Person person = new Person("admin", 1);Bundle bundle = new Bundle();bundle.putSerializable("person", person);intent.putExtras(bundle);startActivity(intent);}

3)获取传递的数据

 private void init(){Person person = (Person)getIntent().getSerializableExtra("person");Log.i("TAG", "Person name : " + person.getName() + " ---- age : " + person.getAge());}

2、传递对象集合

1)同上。

2)同上。

注:使用putSerializable()方法时,需要把List<>强转成为Serializable,并且集合中的成员都需要实现Serializable接口。

 private void clearDrawView(){Intent intent = new Intent(MainActivity.this, MainActivity.class);List<Person> lists = new ArrayList<Person>();Person person = new Person("admin", 1);lists.add(person);Bundle bundle = new Bundle();bundle.putSerializable("person", (Serializable) lists);intent.putExtras(bundle);startActivity(intent);}

3)同上。

注:不足之处在于,由于获取数据时候,需要把Serializable强转成为对应的List<>,此处会有警告。

 private void init(){List<Person> lists = (List<Person>)getIntent().getSerializableExtra("person");for(int i=0;i<lists.size();i++) {Person person = lists.get(i);Log.i("TAG", "Person name : " + person.getName() + " ---- age : " + person.getAge());}}

三、注意

使用以上方法传递对象时,都是创建了新的实例,而非传递对象的引用,如果是传递引用,也就无需序列化了。

Android Activity之间传递类对象相关推荐

  1. android Activity 之间传递复杂对象

    .传递Object 有两种方式来传递Object:Serializable和Parcelable 2.1 使用Serializable方式 前提:Object需要实现Serializable接口 用S ...

  2. Android截屏幕实现,截取屏幕为bitmap,并保存进手机图库,activity之间传递bitmap对象

    Android截屏幕实现,截取超过一屏幕的长图,截取当前显示的一屏幕的图片,截图屏幕内的部分图片,并保存到本地,更新到手机图库中:当然还有一种bitmap在activity之间传递的需求 踩坑-–&g ...

  3. android activity之间传递对象,Android Activity之间的数据传递

    一.通过startActivity来进行Activity的传值 在Android中,如果我们要通过一个Activity来启动另一个Activity,可以使用 startActivity(Intent ...

  4. android activity之间跳转和数据传递参数,Activity跳转(有返回数据跳转)以及传递参数和回传参数...

    使用Bundle在Activity之间传递数据 Bundle类是一个key-value对,是一个final类 两个Activity之间通信可以用Bundle类实现步骤: 新建一个Bundle类 Bun ...

  5. Android 开发笔记——通过 Intent 传递类对象

    Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...

  6. Android Intent之传递带有对象的集合(Serializable传递对象和对象集合)

    Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...

  7. 通过 Intent 传递类对象

    Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...

  8. ​Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]

    Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable] 在Android中的不同Activity之间传递对象,我们可以考虑采用Bun ...

  9. 不同Activity之间传递数据--Bundle对象和startActivityForResult方法的实现

    首先,由于Activity是Android四大组件之一,如果一个应用程序中包含不止一个Activity,则需要在AndroidManifest.xml文件中进行声明. 例如进行如下的声明(程序中包含两 ...

最新文章

  1. python瀑布图怎么做_利用Python绘制数据的瀑布图的教程
  2. java 多线程同步_浅谈Java多线程(状态、同步等)
  3. centos压缩和解压缩
  4. oracle左连接数据会对不上吗,一周工作总结–左连接造成的一些问题-Oracle
  5. 前端工具安装和运行相关
  6. Android自定义ImageView(二)——实现双击放大与缩小图片
  7. 【html】表单元素练习
  8. 用邮件备份手机数据是必然趋势
  9. Java编程:切面条
  10. 第11 章 关联容器
  11. jQuery的$.ajax()与php后台交互,进行文件上传并保存在指定目录
  12. h3c服务器虚拟光驱上传慢,01-正文
  13. php在线翻译,PHP 在线翻译函数代码
  14. 监视Python程式自动退出,并重新启动程式
  15. 联想服务器光驱安装win7系统,联想光盘安装win7系统教程
  16. 技术岗的职业规划_技术型员工职业生涯规划
  17. PAT甲级 A1031
  18. numpy.max() , sum()
  19. 应用程序框架 Application Framework
  20. 数据结构:二叉树及堆排序

热门文章

  1. 【转】对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)
  2. 【转】逆变与协变详解
  3. Python3 使用 pymysql 连接 MySQL 建表时出现 Warning3719 UTF8 警告
  4. 带字母的计算机在线使用,ASCII,进位制在线转换工具
  5. java 里面matches什么意思_Java Regex中的matches()和find()之间的区别
  6. C++,string类的指针,string类数组的指针 string *s
  7. 【CodeForces - 628C】Bear and String Distance(贪心,构造)
  8. 【蓝桥杯官网试题 - 历届试题】发现环(dfs+并查集,或无向图tarjan判环,无向环,或拓扑排序)
  9. 动态参数 maven_使用Jenkins Git参数实现分支标签动态选择
  10. 惯性制导精度是多少_航天装备的命中精度