3

我的应用程序有两种布局 A 和 B。

在 A 中,用户通过按 RADIO BUTTONS 选择一些数据。然后他按下一个 BUTTON 进入 B 布局并使用这个选定的变量来动态构建一些视图(EditTexts、TextVies 和 Buttons)。

在布局 A 中,我实现了 onDestroy()(如果我实现 onStop(),也会发生同样的事情)来保存用户选择的数据。如果我通过返回或按下主页并从任务管理器中删除它来退出应用程序,如果用户再次启动应用程序,用户选择的数据仍将可见。

现在,在布局 B 中,首先我根据布局 A 的用户选择数据构建视图的第一部分,然后我还有额外的按钮,允许用户根据需要向该布局添加和删除尽可能多的视图。

现在我的困惑来了............在用户填写布局B中需要的任何内容后,然后返回A,或退出应用程序,我想保存在布局 B 中输入的数据。我知道如何使用 SharedPreferences 保存数据,但我不知道我需要为布局 B 实施哪些方法,甚至可能还需要为 A 实施哪些方法来完成我的任务。

这正是我想要发生的......我想要的是能够使用用户为布局 B 填充的数据启动应用程序。布局 A 似乎正在工作。如果用户在布局 A 中选择相同的数据(意味着保持一切原样),只有这样我才想使用保存的数据,否则我想用用户的新选择重新启动新的布局 B。

还有一个问题。如果用户从 B 返回布局 A,因为所有内容都已保存在布局 A 中,他可以按下按钮并返回布局 B(可能想要更改他/她选择的值或只是不小心按下了返回按钮)。我也为布局 B 实现了 onDestroy(),但我遇到了问题。如果用户没有更改布局 A 中的选择并再次进入布局 B,我保存的所有内容现在都将重建,但如果他/她返回 A 并再次来到 B,则它不存在,每次都会发生这种情况...如果我来回走动,我只会在奇数情况下看到保存的数据,在偶数情况下它不存在。

在布局 B 中,我将所有内容保存在 onDestroy() 中,然后在 onCreate() 中检查布局 A 的数据是否相同,以便我可以再次重建布局 B;否则,布局 B 将是新的。

4

2 回答 2

1

而不是使用onDestroy()/onCreate()你最好使用onPause()/onResume(),因为这些总是被调用,但是对 onDestroy() 的调用可能会在这里和那里错过。

您需要onPause()在您的活动 A 和 B中实施。

一旦您弄清楚如何可靠地将您的首选项保存在 中onPause(),您可以根据您的应用程序逻辑在不需要时丢弃已保存的数据。

于 2012-06-25T01:40:15.560 回答
0

onDestroy 对于序列化数据来说太迟了。您不知道 Activity 何时被销毁。

反正。您必须以某种方式调用 Activity B。为什么不直接将这些值作为 Intent 的附加值传递?

于 2012-06-25T00:09:13.667 回答