【问题标题】:onActivityResult AndroidonActivityResult Android
【发布时间】:2013-05-13 11:04:45
【问题描述】:

我是 android 新手,有以下查询。

我正在构建一个应用程序,它首先包含两个活动,第二个活动相互发送消息。 'first' 向'second' 发送消息,然后'second' 开始,显示收到的消息并将消息发送回'first'。最后首先显示收到的消息。

在第一个活动中,我必须使用 startActivityForResult 启动第二个活动,因为我需要回复。

问题 - 在覆盖 onActivityResult 时为什么我们必须检查 if(resultCode == RESULT_OK)

根据android网站-

onActivityResult 是“在您启动的活动退出时调用,为您提供启动它的 requestCode、它返回的 resultCode 以及来自它的任何其他数据。 "

因此,如果我在“第二个活动”中将 ResultCode 设置为 Result_OK,为什么我必须在“第一个”活动中检查 resultCode。 ? 'second'设置resultCode并退出时不会调用onActivityResult吗?

谢谢!

PS - 我已经尝试删除语句 - if(resultCode == RESULT_OK) 。我得到一个 NullPointerException。

【问题讨论】:

    标签: java android android-activity


    【解决方案1】:

    您的活动可能以两种方式退出,首先听起来“正常”,您输入了您的消息,然后可能按一些“完成”按钮来完成它。这样您就可以将结果设置为 OK。

    还有第二种用户可以按下后退按钮的方式,因此您的活动在没有捕获用户输入的情况下结束,因此您的 onActivityResult 可能一无所获。这样你就得到了你的空指针异常,你知道用户在没有输入正确输入的情况下退出了活动 2。

    希望您明白为什么 ResultCode 在这种情况下很重要。

    【讨论】:

      【解决方案2】:

      当您在第二个活动中并按下返回键时,第二个活动将完成,结果代码不会是“OK”。所以需要ResultCode。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-10
        • 2019-01-23
        相关资源
        最近更新 更多