如何在捆绑中保存二维自定义对象数组?

时间:2014-07-04 15:50:14

标签: android

我需要在一个包中保存一个二维自定义对象数组,以便在屏幕旋转后恢复活动,但我找不到一个例子。

3 个答案:

答案 0 :(得分:0)

您可以使用Bundle.putSerializable()作为数组Serializable。您还需要制作自定义类SerializableHere's有关实施Serializable的教程。

答案 1 :(得分:0)

JSON怎么样?

开发一种方法将自定义对象转换为JSON对象,并添加辅助方法,如" toJSON" &安培; " fromJSON"

然后,您可以为JSON对象数组创建JSONArray。 该对象的2D数组只是JSONArrays的JSONArray。

以下是一个示例:

[
  [
   {"name":"john", "age":25}, 
   {"name":"david", "age": 40}
  ], 
  [
   {"name":"chris", "age":15},
   {"name":"howard", "age":55}
  ]
]

答案 2 :(得分:0)

不是一个好主意,伙伴。我建议将其保存在其他地方而不是Bundle。你仍然可以使用相同的钩子方法onSaveInstanceState& onRestoreInstanceState就是出于此目的。但是,Bundle对象不是为存储复杂的数据结构而设计的。它应该处理的最多是一个常规对象。你所拥有的甚至不是阵列。它是二维数组。您只需要存储/恢复数据就需要很多解析状态。

  

如何将二维数组放在自己的实例中   应用程序对象并从您的Activity或访问它   什么?如果设备旋转,它将仅重新启动活动。   不是应用程序。所以,这是一种可能的解决方案。

另一个是在设备旋转时阻止Activity重启。重新启动的整个目的是将不同的资源用于不同的布局形状因子。如果您没有使用不同的布局文件,您可能不需要重新启动活动。

无论如何,将复杂数据放在Activity范围之外总是有帮助的。 Activity中有很多状态更改,重新启动和生命周期事项。通常,如果您将复杂数据放在Activity中,它就不稳定且不可靠,因为它会根据活动状态不断变化。

希望有所帮助。