【发布时间】:2017-01-18 16:33:28
【问题描述】:
我正在创建一个 Android 应用。其中一项功能是从用户那里收集一些数据(项目名称、项目 ID 和条形码字符串)。
Activity1 是一个表单。用户手动输入项目名称和项目编号。对于条形码字符串,用户单击“扫描”按钮,然后启动 Activity2(扫描仪)以扫描和读取条形码。读取条形码后,Activity1(表单)将再次启动,所有数据都应显示在表单上。
当Activity2被Intent启动时,Activity1被杀死。所以,我必须在盯着 Intent 之前获取项目名称和项目编号并临时存储它们。然后当 Activity1 再次启动时,这些数据将再次呈现在表单上。
现在我正在考虑使用 Intent Extra 来保留项目名称和编号,并将它们传递给 Activity2 并返回给 Activity1。鉴于 Activity2 不需要这些数据,我想知道在这种情况下这是否是正确的方法。有没有更好的办法?我应该改用共享首选项吗?
【问题讨论】:
-
当 Activity2 由 Intent 启动时,Activity1 被杀死。 仅当您明确销毁它时。是这样吗?如果有,为什么?
-
@MLAC 关于这个问题:您不必担心。第一个活动永远不会被杀死。您可以使用正常的保存/恢复实例状态机制来保留您需要的信息(如果您不知道我在做什么,请使用 Google“恢复实例状态”)。
-
我现在遇到的问题是,当我使用意图从 Activity1 转到 Activity2 时,Activity1 和表单上的数据都消失了。因此,当我再次启动 Activity1 时,会在没有先前数据的情况下创建活动。所以我必须在启动Activity2之前保存数据。
-
你如何从
Activity2返回Activity1?它不应该“重新开始”,它应该只是恢复。在这种情况下,表单中的所有数据应该仍然存在。请将您的清单添加到您的帖子中。 -
另外,如果
Activity2不需要您在Activity1中收集的数据,则没有理由将此数据传递给Activity2。
标签: android android-intent android-sharedpreferences