1. 使用serializable
对象实现parcelable接口,但是不能通过Intent在不同app(进程)间传递这个对象;
会报错:
android.os.BadParcelableException: ClassNotFoundException when unmarshalling: cm.transobj.ObjPar
对象如果实现了serializable,可以这么做;当然进程间通信应该通过aidl;但既然可以,不妨试一试;
2.直接上代码
public class ObjSer implements Serializable{
/**
*
*/
private static final long serialVersionUID = -336990741145778963L;
private String mName;
private int mId;
public String getName(){
return mName;
}
public void setName(String name){
mName = name;
}
public int getId(){
return mId;
}
public void setId(int id){
mId = id;
}
}
发送端代码:
Intent intent = new Intent();
intent.setClassName("yu.obj", "yu.obj.Main");
ObjSer ser = new ObjSer();
ser.setId(2);
ser.setName("this is serialize");
Bundle bundle = new Bundle();
bundle.putSerializable(SERIALIZABLE_KEY, ser);
intent.putExtras(bundle);
startActivity(intent);
接收端:
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
if(null != bundle){
ObjSer ser = (ObjSer)bundle.getSerializable("serial");
if(null != ser){
txtView.setText("serID:" + ser.getId() + "\n" +
"sername:" + ser.getName() + "\n");
}
}
这里有两点需要注意
- 接收端需要相同的类ObjSer,并且serialVersionUID要相同;
- 类的包名需要相同,把这个类做成jar包比较好;
上述两点如果不满足将会报错:
java.lang.RuntimeException: Parcelable encounteredClassNotFoundException reading a Serializable object