【问题标题】:can not send existing objects using serialization android无法使用序列化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 对象是否包含一些具有不可序列化实例的属性?
  • 获得了一项技术,我正在从在构造函数中初始化的旧对象值创建新对象,并且效果很好!谢谢 :)

标签: android android-intent android-activity serializable


【解决方案1】:

您的自定义类实现 Serializable 接口,然后您可以使用 Intent#putExtra() 方法的 putExtra(Serializable..) 变体在 Intent 中传递对象实例。

伪代码:

//传递: intent.putExtra("MyClass", obj);

// 在第二个 Activity 中检索对象 getIntent().getSerializableExtra("MyClass");

【讨论】:

    猜你喜欢
    • 2018-08-01
    • 2015-01-29
    • 2015-09-28
    • 1970-01-01
    • 2013-07-23
    • 2020-11-03
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    相关资源
    最近更新 更多