我想启动另一个Activity并从一个类中按类型ViewGroup发送一个对象。
这里是班级:
public class SerializableObject implements Serializable {
public ViewGroup parent;
public SerializableObject(ViewGroup parent){
this.parent = parent;
}
public ViewGroup getParent(){
return this.parent;
}
}
这里是电话:
Intent i = new Intent(thisContext,CordovaViewer.class);
i.putExtra("KEY",obj);
cordova.getActivity().startActivity(i);
我收到错误:
Parcelable遇到编写可序列化对象的IOException
答案 0 :(得分:2)
您无法在活动之间发送视图。每个视图都附加到它自己的Activity(它的Context)。如果您尝试在一个使用不同活动创建的活动中使用View,则会导致内存泄漏和崩溃。
只需发送您在接收活动中重新创建对象所需的数据。
您可以使用一个简单的Serializable类来完成此操作,该类仅包含必要的数据,或者只需为您需要传递的每个数据设置Extra。
答案 1 :(得分:0)
您的班级必须实施Serializable
。
intent.putExtra("MyClass", obj);
// To retrieve object in second Activity
getIntent().getSerializableExtra("MyClass");
希望这有帮助。
答案 2 :(得分:0)
尝试使用Bundle.Serializable传递可序列化列表:
Bundle bundle = new Bundle();
bundle.putSerializable("value", obj);
intent.putExtras(bundle);
在其他Activity
中将其视为:
Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
Object obj = bundle.getSerializable("value");