从任何活动返回结果

时间:2012-06-28 21:18:00

标签: android android-intent

我有一个包含4个活动的应用程序,A,X,Y和Z。

A是一种登陆活动,它为用户显示数据库中的一堆信息。

X,Y和Z是由A开始修改数据的活动。这些活动实际上并不查询数据库,而是将更改的信息返回给A,后者执行onActivityResult中的所有工作。流程总是A - > X或Y或Z - >答:这很有效。

我想做的是让用户可以在X,Y和Z之间任意次数导航,直到点击保存按钮。这将改变流程,使得A - > X - > Y - > Z - > A是可能的。但是,只需要从单击“保存”的活动中保留数据,在该示例中为Z.A然后将从Z接收结果,处理此更改并继续。如果用户以这种方式导航,那么在X和Y中发生的事情并不重要,它们就被丢弃了。

我已经做了几次尝试。我最好的是在X,Y或Z之后立即调用finish()启动另一个不是A的活动。这允许用户在单击保存时返回到A,这意味着它的导航方面是正确的,但结果代码发送的内容始终为RESULT_CANCELED。我已经研究过使用Intent标志FLAG_FORWARD_RESULT,但我没有使用它的经验,当它与已经为结果启动的活动一起使用时会引发错误。我不确定这是否是正确的探索技术,因为从我读过的内容来看,只有在调用活动和返回结果的活动之间会有一个活动时才使用它。

这样的流程是否可能?基本上,我需要一个Activity来启动另一个结果,允许用户从第二个活动执行一些任意数量的导航,然后在导航完成后将结果返回到原始活动。可以只修改代码,使X,Y和Z自己进行数据库访问,但如果可以,我宁愿避免使用它。

1 个答案:

答案 0 :(得分:2)

  

但是,只需要从点击保存的活动

中保留数据

在我看来,最简单的方法是不要在startActivityForResult(...)中使用Activity A,只需使用startActivity(...)后跟finish()来终止Activity A。< / p>

然后,当其他任何Activities点击其保存按钮时,让他们为startActivity(...)致电Activity A并传递需要保存为Intent的数据附加功能。

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

相关问题