Activity之间通过Intent传递值,支持基本数据类型和String对象及它们的数组对象byte、byte[]、char、char[]、boolean、boolean[]、short、short[]、int、int[]、long、long[]、float、float[]、double、double[]、String、String[],还有实现Serializable、Parcelable接口的类对象。

package com.example.test;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class MainActivity extends Activity implements OnClickListener{ private Button btnSend; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnSend = (Button)findViewById(R.id.send);
btnSend.setOnClickListener(this);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
} @Override
public void onClick(View v) {
if(v.getId() == R.id.send){
Intent intent = new Intent(this, HomeActivity.class);
Bundle bundle = new Bundle();
bundle.putString("Data", "hello.......");
User user = new User();
user.setAge(11);
user.setName("xiaosi");
bundle.putSerializable("User", user);
intent.putExtras(bundle);
startActivity(intent);
}
} }
package com.example.test;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.widget.TextView; public class HomeActivity extends Activity { private TextView text; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home); Intent intent=getIntent();
Bundle bundle=intent.getExtras();
String str=bundle.getString("Data");
User user = (User) bundle.getSerializable("User"); text=(TextView)findViewById(R.id.text);
text.setText(str+"姓名:"+user.getName()+"年龄:"+user.getAge());
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.home, menu);
return true;
} }

所以说activity之间传递自己定义数据,仅仅能实现implements Serializable或者Parcelable接口。

能够用bundle putSerializable(String,Serizlizable)数据或者直接用intent putExtrr(String,Serizlizable)数据。

我有一个需求须要传递多个自己定义类型数据,于是我写了一个对象把我须要的那些自己定义数据封装了起来,这个类实现了Serizlizable接口。可是在putExtra的时候出现了错误。

后来我发现要想在Activity之间传递数据必须全部的内容都实现serializable接口才行,而我的对象中封装的一个自己定义类型数据没有实现这个接口,所以出现了错误。

之后我让那个自己定义类型实现了serializable接口就没有问题了。

我自己定义了一个TransmitData对象,实现了serializable接口。

package com.sjf.model;

import java.io.Serializable;
import java.util.Date; /**
* 传输的对象,直接通过Socket传输的最大对象
* @author XIAOSI
*
*/
public class TransmitData implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
//发送的消息类型
private TransmitType type;
// 来自哪个用户
private String fromUser;
// 发往哪个用户
private String toUser;
// 传输的内容
private User user;
// 请求结果
private boolean isSucess;
// 请求说明,反馈说明
private String description;
// 请求或者反馈时间
private Date time; public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
public boolean isSucess() {
return isSucess;
}
public void setSucess(boolean isSucess) {
this.isSucess = isSucess;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public TransmitType getType() {
return type;
}
public void setType(TransmitType type) {
this.type = type;
}
public String getFromUser() {
return fromUser;
}
public void setFromUser(String fromUser) {
this.fromUser = fromUser;
}
public String getToUser() {
return toUser;
}
public void setToUser(String toUser) {
this.toUser = toUser;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}

然而TransmitData对象中自己定义数据类型User并没有实现序列化接口。

就报错出:Parcelable encountered IOException writing serializable object (name = xxx)

[Android]Parcelable encountered IOException writing serializable object (name = xxx)的更多相关文章

  1. Parcelable encountered IOException writing serializable object

    异常: java.lang.RuntimeException: Parcelable encountered IOException writing serializable object 这是在in ...

  2. Android 异常 UncaughtException detected: java.lang.RuntimeException: Parcelable encountered IOExcepti

    异常信息: UncaughtException detected: java.lang.RuntimeException: Parcelable encountered IOException wri ...

  3. Android Parcelable 源码解析

    大家都知道,要想在Intent里面传递一些非基本类型的数据,有两种方式,一种实现Parcelable,另一种是实现Serializable接口. 今天先不说Serializable 接口,只说Parc ...

  4. Encountered IOException running import job: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://slaver1:9000/user/hadoop/tb_user already exists

    1.当时初学Sqoop的时候,mysql导入到hdfs导入命令执行以后,在hdfs上面没有找到对应的数据,今天根据这个bug,顺便解决这个问题吧,之前写的http://www.cnblogs.com/ ...

  5. pig ERROR 2997: Encountered IOException. File or directory null does not exist.

    grunt> ls 2014-03-30 19:58:31,344 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 2997: Enc ...

  6. java.io.IOException: Cleartext HTTP traffic to xxx.xxx.xxx.xxx not permitted

    java.io.IOException: Cleartext HTTP traffic to xxx.xxx.xxx.xxx not permitted 转 https://blog.csdn.net ...

  7. Android Parcelable和Serializable的区别,androidparcelable

    本文主要介绍Parcelable和Serializable的作用.效率.区别及选择,关于Serializable的介绍见Java 序列化的高级认识. 1.作用 Serializable的作用是为了保存 ...

  8. Android Parcelable和Serializable的区别

    本文主要介绍Parcelable和Serializable的作用.效率.区别及选择,关于Serializable的介绍见Java 序列化的高级认识. 1.作用 Serializable的作用是为了保存 ...

  9. [转]Android Parcelable和Serializable的区别

    本文主要介绍Parcelable和Serializable的作用.效率.区别及选择,关于Serializable的介绍见Java 序列化的高级认识. 1.作用 Serializable的作用是为了保存 ...

随机推荐

  1. ruby简单的基本 3

    类 Ruby一切都是对象,它包含了一个恒定.例如,可以使用.class物业查看对象的类型,你可以看一下1.class.你会发现常1类型是Fixnum,1但它是Fixnum的一个例子. Ruby本类cl ...

  2. [Cocos2d-x]在Cocos2d-x 3.x如何通过版本号WebSocket连接server数据的传输

    WebSocket 首先新建一个空的目录,通过npm安装nodejs-websocket: npm install nodejs-websocket 新建app.js文件: var ws = requ ...

  3. 第十二章——SQLServer统计信息(1)——创建和更新统计信息

    原文:第十二章--SQLServer统计信息(1)--创建和更新统计信息 简介: 查询的统计信息: 目前为止,已经介绍了选择索引.维护索引.如果有合适的索引并实时更新统计信息,那么优化器会选择有用的索 ...

  4. 关闭 MsMpEng.exe

    MsMpEng.exe是Windows Defender 自动保护服务的核心引擎. 系统是win8.1 最近发现MsMpEng.exe是任务管理器里面最占内存的一个程序,且无法强制结束程序.偶然发现一 ...

  5. 但从谈论性能点SQL Server选择聚集索引键

    简单介绍 在SQL Server中,数据是按页进行存放的.而为表加上聚集索引后,SQL Server对于数据的查找就是依照聚集索引的列作为keyword进行了. 因此对于聚集索引的选择对性能的影响就变 ...

  6. [linux]scp指令(转)

    Linux scp命令用于Linux之间复制文件和目录,具体如何使用这里好好介绍一下,从本地复制到远程.从远程复制到本地是两种使用方式.这里有具体举例: ================== Linu ...

  7. UnitOfWork应用

    UnitOfWork以及其在ABP中的应用 Unit Of Work(UoW)模式在企业应用架构中被广泛使用,它能够将Domain Model中对象状态的变化收集起来,并在适当的时候在同一数据库连接和 ...

  8. GitBook 配置说明

    1. 下载并安装 npm node-v0.12.0.pkg http://nodejs.org/download/ 2. 安装 gitbook $ sudo npm install gitbook-c ...

  9. Unity模拟龙之谷人物行走简单控制

    我个人挺喜欢龙之谷(DN)的人物控制的(不是广告哈....),就是人物太萌了一点,动作.打击感都挺好的. 今天用Unity简单模仿了一下DN的人物控制,当然,游戏里面动作非常多,我这里仅仅做了简单的w ...

  10. Javascipt数组去重的几种方式

    方法一 function unique(arr) { var retArr = []; for (var i = 0; i < arr.length; i++) { (retArr.indexO ...