【问题标题】:Intent putextra serializable object arrayIntent putextra 可序列化对象数组
【发布时间】:2013-07-10 22:27:27
【问题描述】:

我的问题是带有可序列化对象数组的 putextra 方法。我的意思是,如果我尝试底部代码,它会抛出 Caused by: java.io.NotSerializableException:

代码如下:

 class Example implements Serializable
    {
      private int ID; // It has getters and setters and also other variables.
    }

Intent inte=new Intent(this,OTHERCLASS.class);
Example[] examples=new Example[]; // It's just an example.
Bundle bundle = new Bundle(); 
bundle.putSerializable("Details", examples);
inte.putExtras(bundle);
startActivity(inte);

谢谢。

【问题讨论】:

  • 为什么是 Serializable 而为什么不是 Parcelable?
  • @PankajKumar 传递 SeriazableParceable 更容易和更短,他要求的是解决方案而不是建议
  • 其实我不知道parcelable怎么用,能举个例子吗?
  • @MuhammadBabar 实际上是的 ;)
  • @MuhammadBabar 你问这个问题了吗?我觉得不行 :)。所以你为什么把你的腿放在这里。他知道他该做什么或不该做什么。首先阅读有关 Serializable 和 Parcelable 的内容,然后在 commnet 中提及我。希望你能找到。

标签: android serialization android-intent


【解决方案1】:

这是因为你不能序列化一个内部类而不使它的父类可序列化。在您的情况下是您的活动。因此,只需为您的示例类创建一个新的 java 文件

【讨论】:

  • 这对我帮助很大!!!我正在传递一个可序列化的 ClassA 类型的对象,但我在该 ClassA 对象中有另一个对象,其类未序列化。使所有通过可序列化的类修复它!
【解决方案2】:

虽然你的类是可序列化的,但你的类 (Example[]) 的项目数组是不可序列化的。 编辑:感谢@gomino 指出这是错误的。我只是假设这是问题的原因而没有真正考虑过。

另外,使用 Parcelable 会更有效。 You can find a tutorial here.

【讨论】:

  • 你能举个例子吗?
  • 我的对象类有很多对象,所以将其更改为 parcelable 有点不可能。例如,我的对象类有 ArrayList,很多字符串和 int 变量......所以不存在有机会用可序列化的方式来做吗?
  • 或者我将更改我不想要的变量静态。
  • 好的,我将变量更改为静态。但是当我阅读关于它的可打包作品时。所以我会接受这个答案。
猜你喜欢
  • 1970-01-01
  • 2017-03-21
  • 1970-01-01
  • 2017-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
相关资源
最近更新 更多