我是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。
答案 0 :(得分:1)
您的活动可能会以两种方式退出,首先是您输入消息时听起来“正常”,并且可能会按“完成”按钮完成此操作。这样您就可以将结果设置为OK。
用户可以按下后退按钮的第二种方式,因此您的活动结束而不捕获用户输入,因此您的onActivityResult可能什么也得不到。通过这种方式,您可以获得空指针异常,您知道用户在没有输入正确输入的情况下退出活动2。
希望您了解为什么在这种情况下ResultCode很重要。
答案 1 :(得分:1)
当您处于第二个活动并按下后退键时,第二个活动将完成,结果代码将不会为“OK”。所以需要ResultCode。