我需要在一个包中保存一个二维自定义对象数组,以便在屏幕旋转后恢复活动,但我找不到一个例子。
答案 0 :(得分:0)
您可以使用Bundle.putSerializable()
作为数组Serializable
。您还需要制作自定义类Serializable
。 Here'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中,它就不稳定且不可靠,因为它会根据活动状态不断变化。
希望有所帮助。