我的情况是我有 3 个 Activity 。
- 结果 Activity
- 简单搜索 Activity
- 复杂搜索 Activity
流程如下:用户可以选择从将启动 SimpleSearchActivity 的 ResultsActivity 进行搜索。用户可以从那里执行简单的搜索。结果传回 Results Activity 。
但是,用户可以从 SimpleSearchActivity 选择进行复杂搜索,这将完成 SimpleSearchActivity 并启动 ComplexSearchActivity。我想从那里将结果传递回 ResultsActivity。我不确定该怎么做,因为这第三个 Activity 不是从第一个 Activity 启动的,而是从第二个 Activity 启动的。
我考虑过的选项:
在复杂搜索情况下,返回到 ResultsActivity 并从那里启动 ComplexSearchActivity。不确定我是否真的想要这个,因为我不希望 SimpleSearch 关闭返回结果然后立即启动 Complex。我担心这会在启动 ComplexSearchActivity 之前“闪现”ResultsActivity。
在复杂搜索情况下,从 SimpleSearch 使用 startActivityForResult(...) 启动 ComplexSearch,复杂完成时,简单搜索可以获取结果,然后将其传回 Results Activity 。我不确定这种链接是否有效。即使是这样,我也担心在复杂的完成时 SimpleSearchActivity 会“闪烁”只是为了将结果传回。
将搜索结果存储在某处的静态变量中,在 ResultsActivity 启动时只需检查可能已由任一搜索 Activity 设置的静态变量。呸!
我还考虑过只进行一次搜索 Activity 并在某些字段上显示/隐藏(简单与复杂)。但是,我将简单搜索作为对话 Activity (在平板电脑的情况下)启动,并将复杂搜索作为全屏 Activity 启动。所以我不能真正使用相同的搜索 Activity 。
想法?以前有人尝试过这样的事情吗?
最佳答案
有几种方法可以实现这一点:
选项 1:您可以选择不在启动 ComplexSearchActivity
时关闭 SimpleSearchActivity
。相反,让 ComplexSearchActivity
将其结果发送回 SimpleSearchActivity
,然后让 SimpleSearchActivity
将该结果传递给 ResultsActivity
。
更新:至少根据我的经验,这将没有 UI“闪光”;它应该看起来是无缝的。
选项 2:使用 FLAG_ACTIVITY_FORWARD_RESULT ,正是为了这个目的而存在。
关于android - 将 Activity 结果传回祖 parent Activity (不是父 Activity ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30250208/