0

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

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

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

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

根据安卓网站 -

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

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

谢谢 !

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

4

2 回答 2

1

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

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

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

于 2013-05-18T10:38:48.077 回答
1

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

于 2013-05-18T10:40:24.630 回答