我有一个包含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自己进行数据库访问,但如果可以,我宁愿避免使用它。
答案 0 :(得分:2)
但是,只需要从点击保存的活动
中保留数据
在我看来,最简单的方法是不要在startActivityForResult(...)
中使用Activity A
,只需使用startActivity(...)
后跟finish()
来终止Activity A
。< / p>
然后,当其他任何Activities
点击其保存按钮时,让他们为startActivity(...)
致电Activity A
并传递需要保存为Intent
的数据附加功能。
然后,您只需要在getIntent()
onCreate(...)
方法中使用Activity A
即可获得有效的'结果'。如果Intent
为null
或不包含要保留的预期数据,那么这是“首次启动”方案,但如果数据存在,您就会知道Activity A
由于另一个Activities
之一中的保存操作而启动。