2

我有一个包含 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 自己访问数据库,但如果可以的话,我宁愿避免它。

4

1 回答 1

2

但是,数据只需要从点击保存的Activity中持久化即可,

在我看来,最简单的事情就是不要使用startActivityForResult(...)in Activity A,而只是使用startActivity(...)后跟finish()to terminate Activity A

然后,当任何其他Activities人点击他们的保存按钮时,让他们调用startActivity(...)Activity A传递需要保存为Intent附加信息的数据。

getIntent()然后,您只需要使用onCreate(...)方法Activity A来获得有效的“结果”。如果Intentnull或不包含要持久化的预期数据,那么这是一个“首次启动”方案,但如果数据存在,您将知道Activity A是由于另一个 中的 Save 操作而启动的Activities

于 2012-06-28T21:35:33.130 回答