Android Activity之间传递类对象
一、简介
开发过程中,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之间传递类对象相关推荐
- android Activity 之间传递复杂对象
.传递Object 有两种方式来传递Object:Serializable和Parcelable 2.1 使用Serializable方式 前提:Object需要实现Serializable接口 用S ...
- Android截屏幕实现,截取屏幕为bitmap,并保存进手机图库,activity之间传递bitmap对象
Android截屏幕实现,截取超过一屏幕的长图,截取当前显示的一屏幕的图片,截图屏幕内的部分图片,并保存到本地,更新到手机图库中:当然还有一种bitmap在activity之间传递的需求 踩坑-–&g ...
- android activity之间传递对象,Android Activity之间的数据传递
一.通过startActivity来进行Activity的传值 在Android中,如果我们要通过一个Activity来启动另一个Activity,可以使用 startActivity(Intent ...
- android activity之间跳转和数据传递参数,Activity跳转(有返回数据跳转)以及传递参数和回传参数...
使用Bundle在Activity之间传递数据 Bundle类是一个key-value对,是一个final类 两个Activity之间通信可以用Bundle类实现步骤: 新建一个Bundle类 Bun ...
- Android 开发笔记——通过 Intent 传递类对象
Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...
- Android Intent之传递带有对象的集合(Serializable传递对象和对象集合)
Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...
- 通过 Intent 传递类对象
Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...
- Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable]
Android中如何使用Intent在Activity之间传递对象[使用Serializable或者Parcelable] 在Android中的不同Activity之间传递对象,我们可以考虑采用Bun ...
- 不同Activity之间传递数据--Bundle对象和startActivityForResult方法的实现
首先,由于Activity是Android四大组件之一,如果一个应用程序中包含不止一个Activity,则需要在AndroidManifest.xml文件中进行声明. 例如进行如下的声明(程序中包含两 ...
最新文章
- python瀑布图怎么做_利用Python绘制数据的瀑布图的教程
- java 多线程同步_浅谈Java多线程(状态、同步等)
- centos压缩和解压缩
- oracle左连接数据会对不上吗,一周工作总结–左连接造成的一些问题-Oracle
- 前端工具安装和运行相关
- Android自定义ImageView(二)——实现双击放大与缩小图片
- 【html】表单元素练习
- 用邮件备份手机数据是必然趋势
- Java编程:切面条
- 第11 章 关联容器
- jQuery的$.ajax()与php后台交互,进行文件上传并保存在指定目录
- h3c服务器虚拟光驱上传慢,01-正文
- php在线翻译,PHP 在线翻译函数代码
- 监视Python程式自动退出,并重新启动程式
- 联想服务器光驱安装win7系统,联想光盘安装win7系统教程
- 技术岗的职业规划_技术型员工职业生涯规划
- PAT甲级 A1031
- numpy.max() , sum()
- 应用程序框架 Application Framework
- 数据结构:二叉树及堆排序
热门文章
- 【转】对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)
- 【转】逆变与协变详解
- Python3 使用 pymysql 连接 MySQL 建表时出现 Warning3719 UTF8 警告
- 带字母的计算机在线使用,ASCII,进位制在线转换工具
- java 里面matches什么意思_Java Regex中的matches()和find()之间的区别
- C++,string类的指针,string类数组的指针 string *s
- 【CodeForces - 628C】Bear and String Distance(贪心,构造)
- 【蓝桥杯官网试题 - 历届试题】发现环(dfs+并查集,或无向图tarjan判环,无向环,或拓扑排序)
- 动态参数 maven_使用Jenkins Git参数实现分支标签动态选择
- 惯性制导精度是多少_航天装备的命中精度