我有一个包含 4 个活动的应用程序,A、X、Y 和 Z。
A是一种登陆Activity,它为用户显示来自数据库的一堆信息。
X、Y 和 Z 是 A 为修改数据而启动的活动。这些活动实际上并不查询数据库,而是将更改的信息返回给 A,A 完成所有工作onActivityResult
。流程始终是 A -> X 或 Y 或 Z -> A。这非常有效。
我想做的是让用户可以在 X、Y 和 Z 之间导航任意次数,直到单击保存按钮。这将修改流程,使 A -> X -> Y -> Z -> A 成为可能。但是,数据只需要从单击保存的 Activity 中持久化,在该示例中为 Z。然后 A 将从 Z 接收结果,处理此更改,然后继续。如果用户以这种方式导航,那么无论 X 和 Y 发生了什么,它们都已被丢弃。
我在这方面做了一些尝试。我最好的方法是在 X、Y 或 Z 启动另一个不是 A 的活动后立即调用finish()
。这允许用户在单击保存时返回到 A,这意味着它的导航方面是正确的,但发送的结果代码始终是RESULT_CANCELED
. 我已经研究过使用 Intent 标志FLAG_FORWARD_RESULT
,但我没有使用它的经验,并且在与已经为结果启动的活动一起使用时会引发错误。我不确定这是否是要探索的正确技术,因为从我读过的内容来看,它仅在调用活动和返回结果的活动之间存在一个活动时才使用。
这样的流量甚至可能吗?基本上,我需要一个 Activity 来启动另一个以获得结果,允许用户从第二个 Activity 执行任意数量的导航,然后在完成导航后将结果返回给原始 Activity。可以只修改代码,使 X、Y 和 Z 自己访问数据库,但如果可以的话,我宁愿避免它。