android - 将 Activity 结果传回祖 parent Activity (不是父 Activity )

标签 android android-intent onactivityresult

我的情况是我有 3 个 Activity 。

  1. 结果 Activity
  2. 简单搜索 Activity
  3. 复杂搜索 Activity

流程如下:用户可以选择从将启动 SimpleSearchActivity 的 ResultsActivity 进行搜索。用户可以从那里执行简单的搜索。结果传回 Results Activity 。

但是,用户可以从 SimpleSearchActivity 选择进行复杂搜索,这将完成 SimpleSearchActivity 并启动 ComplexSearchActivity。我想从那里将​​结果传递回 ResultsActivity。我不确定该怎么做,因为这第三个 Activity 不是从第一个 Activity 启动的,而是从第二个 Activity 启动的。

我考虑过的选项:

  1. 在复杂搜索情况下,返回到 ResultsActivity 并从那里启动 ComplexSearchActivity。不确定我是否真的想要这个,因为我不希望 SimpleSearch 关闭返回结果然后立即启动 Complex。我担心这会在启动 ComplexSearchActivity 之前“闪现”ResultsActivity。

  2. 在复杂搜索情况下,从 SimpleSearch 使用 startActivityForResult(...) 启动 ComplexSearch,复杂完成时,简单搜索可以获取结果,然后将其传回 Results Activity 。我不确定这种链接是否有效。即使是这样,我也担心在复杂的完成时 SimpleSearchActivity 会“闪烁”只是为了将结果传回。

  3. 将搜索结果存储在某处的静态变量中,在 ResultsActivity 启动时只需检查可能已由任一搜索 Activity 设置的静态变量。呸!

  4. 我还考虑过只进行一次搜索 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/

相关文章:

android - 无法从 ZXing 条码扫描仪获取结果

java - 无法通过 EditText 接受整数值

android - 正在从数据库中获取数据,但仍然给出 NullPointerException

android - 如何在 Android 中使用 ffmpeg 合并音频和视频文件?

java - 为什么运行应用程序时出现 fatal error ?

java - 自定义 RecyclerAdapter 和 startActivityForResult

android - 拍照前调用 onActivityResult

java - Android表格行横线

android - 在特定任务中使用 NFC 启动 Activity

android - 调用startActivity()后不调用父Activity的onDestroy()?