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. XXTEA 加密算法 C++ C#兼容版本号

    1.一个不错的可逆加密算法XXTEA 之前无意中看到了TexturePacker 使用了XXTEA来加密图片资源.所以花了点时间来看了下XXTEA. 一般有两种加密算法:1.像md5,SHA1,等ha ...

  2. UVA 12206 - Stammering Aliens(后缀数组)

    UVA 12206 - Stammering Aliens 题目链接 题意:给定一个序列,求出出现次数大于m,长度最长的子串的最大下标 思路:后缀数组.搞出height数组后,利用二分去查找就可以 这 ...

  3. xml在此生活

    小编尾随学习的步伐.今天小编简要概述xml在此生活,xml她的百度百科这一解释:可扩展标记语言 (ExtensibleMarkup Language, XML).用于标记电子文件使其具有结构性的标记语 ...

  4. 【足迹C++primer】48、函数引用操作符

    函数引用操作符 struct absInt { int operator()(int val) const { cout<<val<<"<->!!!&qu ...

  5. JAVA基金会 (三)反射 反思的深度分析

    上一页已经推出反映的一些基本概念,这主要是通过一个例子反映谈的过程,以及样品的实际应用. 这个样例是这种设计思路:从一个属性文件里读取一段字符串,然后,依据该字符串生成相应的类实例对象:这之后另一个增 ...

  6. 使用C/C++编译预处理时须要注意的问题

    1.宏定义不是C/C++语句,不须要使用语句结束符":",否则它也被看做宏体的一部分. 2.不要在引用宏定义的參数列表中使用增量和减量运算符,否则将导致变量的多次求值.比如: #d ...

  7. Kinect开发笔记之二Kinect for Windows 2.0新功能

    这是本博客翻译文档的第一篇文章.笔者已经苦逼的竭尽全力的在翻译了.但无奈英语水平也是非常有限.不正确或者不妥当不准确的地方必定会有,还恳请大家留言或者邮件我以批评指正.我会虚心接受. 谢谢大家.   ...

  8. 减少iPhone手机系统版本号

    要减少移动版本号,本号,或者到"威风"站点或其他能够下载到iPhone固件的站点上下载固件,然后打开iTunes,进入到 然后按着(alt),同一时候用鼠标点击(更新button) ...

  9. Cocos2d-x3.0 DrawNode吸取

    DrawNode正如它的绘图形状的节点,相互作用可以使将来更加灵活. DrawNode* DrawLayer::shape() { auto shape = DrawNode::create(); s ...

  10. 当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法(转)

    对象的synchronized方法不能进入了,但它的其他非synchronized方法还是可以访问的 对每一个class只有一个thread可以执行synchronized static method ...