0

我遇到了非常奇怪的 Android 行为。

我有两个活动,A 和 B。A 从 B 开始startActivityForResult,然后检查 B 的 resultCode。它可以RESULT_OKRESULT_CANCELLEDRESULT_FIRSTUSER。不管我怎么努力,每次RESULT_FIRSTUSER从B回来,A就看到了RESULT_CANCELLED

无奈之下,我想“也许是因为 B 是一个 SingleTask 活动”,所以我修改了清单并删除了SingleTask定义。这行得通,现在RESULT_FIRSTUSER正确返回到A。

为什么?

4

1 回答 1

4

startActivityForResult 仅当正在启动的活动与正在启动的活动在同一任务中时才有效。官方文档在http://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent , int, android.os.Bundle)

请注意,此方法仅应与定义为返回结果的 Intent 协议一起使用。在其他协议中(例如 ACTION_MAIN 或 ACTION_VIEW),您可能无法得到预期的结果。例如,如果您正在启动的活动使用 singleTask 启动模式,它将不会在您的任务中运行,因此您将立即收到取消结果。

于 2013-05-04T23:31:57.753 回答