无法将结果返回到调用活动的 onActivityResult()

Posted

技术标签:

【中文标题】无法将结果返回到调用活动的 onActivityResult()【英文标题】:Unable to get result back to onActivityResult() of calling activity 【发布时间】:2021-09-30 13:00:39 【问题描述】:

我有一个用例,我的 Activity A 将启动某个 SDK 的其他 Activity B,这里 Activity B 是一个透明的 Activity,因此允许我仍然与 A 交互。现在从 A,我使用 startActivityForResult 启动另一个 Activity C () 并从 C 中,我使用 setResult() 发回结果。但我无法在 A 的 onActivityResult() 中取回结果。

这里需要注意的是,来自其他 SDK 的 Activity B 在 androidManifest 文件中将启动模式设置为“singleTask”。

在这种情况下,如何将结果从 C 取回 A?

这是 Activity A 中用于启动 C 的代码:

var intent: Intent =Intent(context, ActivityC::class.java)
startActivityForResult(intent,1009)

在Activity C中设置结果如下:

val returnIntent = Intent()
setResult(Activity.RESULT_OK, returnIntent)
finish()

【问题讨论】:

【参考方案1】:

代码没问题。但问题是,当您启动活动 b 时,在您的堆栈中,活动 b 将是最后一个被创建的活动,因此当您启动 c 时,c 的结果将转到 b 而不是 a。

尝试在 b 之前启动 c 以确保这是问题所在。

【讨论】:

我无法更改活动创建流程,在这种情况下我也无法将结果返回给 B。【参考方案2】:

如果 Activity B 来自另一个 SDK,并且您无法控制导航流程,则必须将数据存储在某处并检查 Activity A 的 onResume() 功能。

【讨论】:

以上是关于无法将结果返回到调用活动的 onActivityResult()的主要内容,如果未能解决你的问题,请参考以下文章

服务如何将结果返回给活动

服务如何将结果返回给活动

无法将查找活动输出映射到 ADF 中的复制活动映射

Android Kotlin 无法从另一个活动中获取结果

Android:setResult 未将结果返回给父 Activity

无法将位置从一项活动返回到另一项活动