【问题标题】:StartActivityForResult() and OnActivityResult() both needed?StartActivityForResult() 和 OnActivityResult() 都需要吗?
【发布时间】:2014-10-07 01:08:57
【问题描述】:

是否有必要使用startActivityForResult() 启动Activity 以在第二个活动中设置结果,或者,

可以通过正常的startActivity() 启动Activity,但仍然在第二个Activity 设置结果并使用onActivityResult() 取回?

【问题讨论】:

  • 如果两者都做同样的事情,为什么会有两种方法?你期望requestCode 的价值是多少?此外,测试这个不应该超过 5 分钟和大约 20 行代码。
  • 答案在于安托万的评论。我已经检查过了,但是如果 startActivityForResult() 是在其他活动中接收结果的唯一方法,那么我很困惑,那么如果没有人可以阅读它,setResult() 在子活动中的用途是什么。因为我在这里看到了某人的实现stackoverflow.com/a/25057102/609782 所以认为setResult() 也有一种我不知道的方法可以用来获取父活动的结果。

标签: android onactivityresult start-activity


【解决方案1】:

Activity.onActivityResult 方法是一个回调。它与startActivitystartActivityForResult 不同,因为响应是异步的。

您可以在没有要求的情况下设置Activity 的结果,但只有在“结果”的活动以startActivityForResult 启动时才会调用方法onActivityResult

所以是的,如果你想启动一个活动并获得一个结果,你需要首先使用Activity.startActivityForResult 启动它,然后覆盖onActivityResult 并在那里捕获结果。

【讨论】:

  • 那么如果没有 startActivityForResult 就无法获得结果,那么设置结果有什么用呢?可以用其他方式阅读吗?
  • API 是围绕这样的想法构建的,即如果您想获得结果,您就知道它,因此使用startActivityForResult 启动活动。在其他条件下我看不到活动结果的使用,并且API没有Activity.getResult方法,只有setResult一个。
  • @Darpan 如果你已经覆盖onActivityResult 来获取结果,没有什么可以阻止你调用startActivityForResult
【解决方案2】:

只有使用startActivityForResult() 启动此活动才能获得结果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2022-11-30
    • 2012-08-27
    相关资源
    最近更新 更多