2

我以编程方式创建了一个包含其他视图的 RelativeLayout,并将其添加到 XML 中定义的父级。但是在重新创建活动后,以编程方式创建的所有视图(包括布局)都会消失。我需要一个 SharedPreferences 对象来保存值然后重新创建布局还是有更简单的方法来保存它?

PS所有新创建的视图都分配了一个ID

4

2 回答 2

3

我建议你调查Activity.onSaveInstanceState(Bundle)

默认实现通过在层次结构中具有 id的每个视图上调用 onSaveInstanceState()并保存当前聚焦视图的 id(所有这些都由onRestoreInstanceState()) 的默认实现。如果您重写此方法以保存每个单独视图未捕获的附加信息,您可能需要调用默认实现 [ via和],否则请准备好自己保存每个视图的所有状态。super.onSaveInstanceState()super.onRestoreInstanceState()

https://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle)

以及我在这里的回答:

如何以编程方式为视图分配 ID?

于 2012-12-25T20:38:05.527 回答
3

我是否需要一个 SharedPreferences 对象来保存值然后重新创建布局

你说你正在创建这些小部件onResume()。您的代码onResume()需要知道需要创建哪些小部件。如果这纯粹是暂时的信息,并且您担心由于屏幕旋转或其他配置更改而被破坏和重新创建的活动,onSaveInstanceState()请在活动或片段上使用以将有关这些小部件的数据从旧的传递到新的活动的实例。另一方面,如果您担心几个月后能够重新创建这些视图,则需要永久存储这些信息:SharedPreferences数据库、其他文件结构、“云”等。

于 2012-12-25T22:02:54.693 回答