gpt4 book ai didi

android - Activity 结果不被记住?

转载 作者:行者123 更新时间:2023-11-29 02:12:49 29 4
gpt4 key购买 nike

我有以下场景(注意 Activity AlaunchMode="singleTop" ):

  1. Activity A 调用 startActivityForResult()关于 Activity B
  2. Activity B 调用 startActivity()C 上,之后 setResult(RESULT_OK)finish() ;此时,onActivityResult() A 中的 NOT 被调用。
  3. Activity C 调用 startActivity()A 上使用 FLAG_ACTIVITY_CLEAR_TOPfinish() ;

这就是我的问题所在。此时,AonActivityResult()被正确调用requestCode , 但不是 RESULT_OK作为 resultCode .我期待它收到 RESULT_OK因为我已经在B中设置了它(这是为结果而启动的)。

为什么我得到的不是RESULT_OK

最佳答案

阅读本文档:

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TOP

If set, and the activity being launched is already running in the current task, then instead of launching a new instance of that activity, all of the other activities on top of it will be closed and this Intent will be delivered to the (now on top) old activity as a new Intent.

传递清除顶部标志将完成堆栈中的所有 Activity 。因此,您将在 onActivityResult 中获得的可能是一个“通知”,告知您要获取其结果的 Activity 已被取消。 (又名 RESULT_CANCELED = 0x00)

更新

当我使用 startActivityForResult 时,在设置结果后,我总是完成我的 Activity 并让调用者开始行动。

您正在做一些不太常见的事情:您设置结果,完成您的 Activity 您还开始另一个 Activity 。我不知道这种情况下的预期行为是什么。你不能改变 Activity 之间的互动吗?

您可以尝试先调用 finish(),然后开始新 Activity (在 Activity B 和 C 中执行此操作)。无论如何,我也不知道当你这样做时会发生什么。我向您推荐第一种方法(更改交互,这样您就不会返回结果并同时创建新 Activity )。

也许您可以链接两个 startActivityForResult,或者您的 Activity B 可以向 A 发送一个新的 Intent 而不是返回其结果?

关于android - Activity 结果不被记住?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6264135/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com