将 activity 结果传回 grandparent activity(不是 parent)
Passing activity result back to grandparent activity (not parent)
我的情况是我有 3 个活动。
- 结果活动
- SimpleSearchActivity
- 复杂搜索活动
流程如下:用户可以选择从将启动 SimpleSearchActivity 的 ResultsActivity 进行搜索。用户可以从那里执行简单的搜索。结果传回结果 activity。
但是,用户可以从 SimpleSearchActivity 中选择进行复杂搜索,这将完成 SimpleSearchActivity 并启动 ComplexSearchActivity。我想从那里将结果传递回 ResultsActivity。我不确定如何执行此操作,因为第 3 个 activity 不是从第一个 activity 启动的,而是第二个
我考虑过的选项:
在复杂搜索情况下,返回到 ResultsActivity 并从那里启动 ComplexSearchActivity。不确定我是否真的想要这个,因为我不希望 SimpleSearch 关闭返回结果然后立即启动 Complex。我担心这会在启动 ComplexSearchActivity 之前 'flash' ResultsActivity。
在复杂搜索的情况下,从 SimpleSearch 使用 startActivityForResult(...) 启动 ComplexSearch,在复杂完成时简单搜索可以获取结果,然后将其传递回结果 activity .我不确定这种链接是否有效。即使它确实如此,我担心在复杂完成时 SimpleSearchActivity 将 'flash' 只是为了传回结果。
将搜索结果存储在某处的静态变量中,并在 ResultsActivity 启动时检查可能已由任一搜索设置的静态变量 activity。呸!
我也想过只进行一次搜索 activity 并在某些字段上进行 show/hide(简单与复杂)。但是,我将简单搜索作为对话框启动 activity(在平板电脑的情况下),将复杂搜索作为全屏启动 activity。所以我不能真正使用相同的搜索 activity.
想法?以前有人试过这样的东西吗?
有几种方法可以实现此目的:
选项 1:您可以选择 不 在启动 ComplexSearchActivity
时关闭 SimpleSearchActivity
。相反,让 ComplexSearchActivity
将其结果发送回 SimpleSearchActivity
,然后让 SimpleSearchActivity
将该结果传递给 ResultsActivity
。
更新:至少根据我的经验,这不会 UI "flash";它应该看起来是无缝的。
选项 2:使用 FLAG_ACTIVITY_FORWARD_RESULT,正是为了这个目的而存在的。
您是否考虑过将数据层抽象为在所有活动之间共享的方法,而不是仅使用某些 activity 来保存数据?
我的情况是我有 3 个活动。
- 结果活动
- SimpleSearchActivity
- 复杂搜索活动
流程如下:用户可以选择从将启动 SimpleSearchActivity 的 ResultsActivity 进行搜索。用户可以从那里执行简单的搜索。结果传回结果 activity。
但是,用户可以从 SimpleSearchActivity 中选择进行复杂搜索,这将完成 SimpleSearchActivity 并启动 ComplexSearchActivity。我想从那里将结果传递回 ResultsActivity。我不确定如何执行此操作,因为第 3 个 activity 不是从第一个 activity 启动的,而是第二个
我考虑过的选项:
在复杂搜索情况下,返回到 ResultsActivity 并从那里启动 ComplexSearchActivity。不确定我是否真的想要这个,因为我不希望 SimpleSearch 关闭返回结果然后立即启动 Complex。我担心这会在启动 ComplexSearchActivity 之前 'flash' ResultsActivity。
在复杂搜索的情况下,从 SimpleSearch 使用 startActivityForResult(...) 启动 ComplexSearch,在复杂完成时简单搜索可以获取结果,然后将其传递回结果 activity .我不确定这种链接是否有效。即使它确实如此,我担心在复杂完成时 SimpleSearchActivity 将 'flash' 只是为了传回结果。
将搜索结果存储在某处的静态变量中,并在 ResultsActivity 启动时检查可能已由任一搜索设置的静态变量 activity。呸!
我也想过只进行一次搜索 activity 并在某些字段上进行 show/hide(简单与复杂)。但是,我将简单搜索作为对话框启动 activity(在平板电脑的情况下),将复杂搜索作为全屏启动 activity。所以我不能真正使用相同的搜索 activity.
想法?以前有人试过这样的东西吗?
有几种方法可以实现此目的:
选项 1:您可以选择 不 在启动 ComplexSearchActivity
时关闭 SimpleSearchActivity
。相反,让 ComplexSearchActivity
将其结果发送回 SimpleSearchActivity
,然后让 SimpleSearchActivity
将该结果传递给 ResultsActivity
。
更新:至少根据我的经验,这不会 UI "flash";它应该看起来是无缝的。
选项 2:使用 FLAG_ACTIVITY_FORWARD_RESULT,正是为了这个目的而存在的。
您是否考虑过将数据层抽象为在所有活动之间共享的方法,而不是仅使用某些 activity 来保存数据?