11

我正在将动态创建的 EditTexts 添加到布局中(onClick 按钮方法)。当我旋转屏幕时,添加的编辑文本消失了。如何将它们添加到包中以将它们放入 onSavedInstanceState 方法中?或者,还有其他方法可以做到这一点吗?我知道我可以保存文本,但是当我旋转它时有没有办法保持屏幕布局?如果用户按下按钮并添加五个 EditTexts(有或没有输入任何内容)我需要在屏幕旋转时保存此布局(我基本上需要对我的应用程序进行虚拟验证:))。

提前致谢!

4

4 回答 4

12

您不能将视图添加到包中,因为它们不可打包/可序列化。您可以并且应该保存到包中的唯一内容是活动的当前状态。

您可以维护一个列表数据结构或一个计数器变量来跟踪动态创建的视图。同时保存 EditTexts 的字符串值。在 onCreate 中,您应该解释该信息以重新创建视图及其状态。

于 2012-06-25T17:02:52.837 回答
2

您无法保存视图。bundle 只是一对名称-值。当然,您可以保存文本,然后再次渲染。方法就是你说的。

onsaveInsatnceState(bundle save) 将文本保存为 save.putString('text1','bla bla') 当然你需要一个循环来保存所有的编辑文本。

然后在oncreated(捆绑保存)

您可以通过 save.getString('text1') 获取您添加的内容

于 2012-06-25T17:01:32.497 回答
0

视图本身并不代表您需要保存的信息。相反,您应该保存它们的坐标、宽度、高度、值等。

于 2012-06-25T16:57:25.320 回答
0

您可以将视图数据保存到类或数组列表中。当您的片段活动将重新启动时,您将在 oncreate 函数中从 saveinstance 状态中获取数据。

使用此函数 setRetainInstance(true)。使用事物功能后,您的片段活动不会破坏。

于 2015-05-26T10:38:13.067 回答