在Android中返回结果时,如何跳过Activity栈的部分内容?

时间:2009-10-16 21:35:02

标签: android

我正在创建一个流程大致如下的应用程序:

  1. 用户在主屏幕上以空列表启动,点击菜单,然后转到“添加项目”。 (活动A)
  2. 为用户提供了一项新活动,允许他们指定搜索条件,然后点击“开始”进行搜索。 (活动B)
  3. 用户获取结果列表,可以单击其中一个查看更多详细信息。 (活动C)
  4. 用户可以看到项目的详细信息,并可以使用菜单项将其保存到活动A中的列表中。(活动D)
  5. 现在,我让每个Activity调用其他Activity for results,然后它将结果一直传递回堆栈,因为它返回到Activity A.

    有没有办法跳过这个,因为我想要的是Activity D的结果直接到达活动A?

    请注意,用户仍然可以通过每个活动向后导航(使用后退按钮),但如果他们在活动D中明确保存该项目,我希望它直接跳转到活动A.

2 个答案:

答案 0 :(得分:1)

我建议只调用活动(不使用* ForResult)调用,然后让活动D调用带有数据的INTENT_ADD_ITEM的活动A,然后让活动A添加项目。

希望这会有所帮助......

答案 1 :(得分:1)

只是为了让人们可以从我后来学到的东西中受益......

解决此问题的关键是使用带有Intent的标志,在本例中使用FLAG_ACTIVITY_CLEAR_TOP。其他标志在控制UI流程方面也很有用。

尝试通过活动链接startActivityForResult()来解决这个问题是一个坏主意。这意味着很难改变应用程序的流程。