onActivityResult Android

时间:2013-05-18 10:33:01

标签: java android android-activity

我是Android的新手并拥有以下查询。

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

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

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

根据android网站 -

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

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

谢谢!

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

2 个答案:

答案 0 :(得分:1)

您的活动可能会以两种方式退出,首先是您输入消息时听起来“正常”,并且可能会按“完成”按钮完成此操作。这样您就可以将结果设置为OK。

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

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

答案 1 :(得分:1)

当您处于第二个活动并按下后退键时,第二个活动将完成,结果代码将不会为“OK”。所以需要ResultCode。