无法将结果返回到调用活动的 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()的主要内容,如果未能解决你的问题,请参考以下文章