无法使用序列化android发送现有对象
Posted
技术标签:
【中文标题】无法使用序列化android发送现有对象【英文标题】:can not send existing objects using serialization android 【发布时间】:2012-09-07 15:36:23 【问题描述】:我正在尝试使用意图和序列化 android 将对象从一个活动转移到另一个活动。在这里,我无法发送已经存在的对象(接收为 null),但是在发送新对象时它可以正常工作。
这是sn-p:
private void someMethod(TPackage tpackageObj)
Intent intent = new Intent(obj, my.tatasky.ChannelActivity.class);
intent.putExtra("parcel", new TPackage()); // it works
intent.putExtra("parcel", tpackageObj); // doesn't work
【问题讨论】:
你是怎么调用这个方法的?我认为我们使用 putParcebleExtra 而不仅仅是 putExtra 您可以发布您要发送的课程吗?它可能与在现有对象中初始化的不可序列化类成员有关,而该成员未在新构造的对象中初始化。 当它工作时意味着对象在接收方根据需要被传输和检索,但“它不起作用”意味着对象(新创建的)在接收方被检索为空。 您的 tpackageObj 对象是否包含一些具有不可序列化实例的属性? 获得了一项技术,我正在从在构造函数中初始化的旧对象值创建新对象,并且效果很好!谢谢 :) 【参考方案1】:您的自定义类实现 Serializable 接口,然后您可以使用 Intent#putExtra() 方法的 putExtra(Serializable..) 变体在 Intent 中传递对象实例。
伪代码:
//传递: intent.putExtra("MyClass", obj);
// 在第二个 Activity 中检索对象 getIntent().getSerializableExtra("MyClass");
【讨论】:
以上是关于无法使用序列化android发送现有对象的主要内容,如果未能解决你的问题,请参考以下文章
Android Bundle 无法将可序列化对象识别为已序列化
在 Android 应用程序中读取对象时出现 EOFException