如何在 Android 中保存(用户创建的)动态布局?

Posted

技术标签:

【中文标题】如何在 Android 中保存(用户创建的)动态布局?【英文标题】:How do you save a (user-created) dynamic Layout in Android? 【发布时间】:2012-03-10 19:25:41 【问题描述】:

我的主屏幕上有一个按钮,每次按下它时都会添加一个编辑文本字段(我将其限制为 20 以实现最佳实践)。它基本上是一个小型预算应用程序。我希望用户在其中一个字段中填写 X 美元。然后,当他们准备好时,再次回到应用程序,创建的 EditText 仍然存在填充值。我知道如何利用 SharedPerfrences 来保持价值。但是,我不知道当用户回来时如何保存新创建的 EditText 字段。

我将展开并有一个按钮和一个与每个 EditText 字段相关联的日期选择器,所以很快单击该按钮将创建三个对象,而不仅仅是一个。但我想先让一个工作,然后再将这个原则应用于其他人。有什么建议么?

【问题讨论】:

【参考方案1】:

听起来是 SQLite 数据库的不错选择。

例如,我使用 SQLite 数据库来保留和调用用户在我的应用程序中安排的小部件的坐标和类型。

请注意,您永远都不想尝试存储和调用实际的 EditText View 对象本身。在您的数据库中,您需要设计适合您需要存储的信息类型的自己的表格格式。如果您只需要保留一系列EditText 字段的状态,那么这可能就像拥有一个只有一列的表一样简单,每行包含一个字符串值。要从该数据库再次构建您的 UI,您将循环并创建一个 EditText 的新实例,并从表中设置每个实例的文本。

【讨论】:

好的,非常感谢。看来我是用错误的角度拍摄的。虽然我很想简化这一点并在 SQLite 上使用 SharedPreferences,但至少你让我走上了正确的轨道!我很想看看其他人会如何尝试。 SharedPreferences 可能是一种更简单的开始和运行的方法。但是SharedPreferences确实是用来存储少量特定的key=value数据的;它根本不适合数组数据。所以,如果你只有一个 EditText,那么你可以有一个像 mFieldValue 这样的首选项键,但是对于许多 EditTexts,你必须使用像 mFieldValue1、mFieldValue2 等这样的键,或者改为将所有 @987654330 分组@s' 值转换为一个值字符串。无论哪种方式都很麻烦,就像在圆孔中放一个方形钉子,这就是 SQLite 数据库的用武之地。 根据您的建议在这里做一些研究,我发现 SQLite 看起来是要走的路!感谢您的帮助。【参考方案2】:

你必须使用androidParcelable接口,参考this知道如何实现它,参考我在***上问过的this question,它有一个很好的答案。

【讨论】:

以上是关于如何在 Android 中保存(用户创建的)动态布局?的主要内容,如果未能解决你的问题,请参考以下文章

CloudKit 通知的动态 alertBody

如何序列化android中的按钮?

保存动态创建的按钮android

如何从 Android 中每个动态创建的 EditText 获取数据?

如何在android中动态添加edittext?

动态创建的 Firebase 动态链接不适用于 Android