startActivityForResult(Intent,int)整数参数的目的是什么

时间:2012-08-06 13:57:50

标签: java android eclipse

我正在学习使用“startActivityForResult”功能的教程。我知道为什么使用这个函数,如果我们想使用返回的数据,我们使用onActivityResult()函数。我想知道的是,为什么我们将一个Integer传递给startActivityForResult()函数?它在哪里使用?

感谢您的帮助!

4 个答案:

答案 0 :(得分:4)

当您开始的Activity完成时,第二个参数将传递给调用Activity的方法onActivityResult()。这是为了区分彼此不同的结果。

您可能遇到一个案例,其中一个活动需要为其他几个人调用结果,并且通过为每个人指定唯一的int,您可以确定在获得结果时要做的正确事情。

编辑:这是一个例子。

假设您有一个屏幕(活动A),您可以在其中选择图库中的图片,然后选择要发送给它的朋友。您将开始一个活动,通过点击按钮从图库中选择一张图片,也许您还有一个“朋友选择器”活动,您也可以从活动A开始。

您希望这两个活动都返回用户选择的数据。当用户完成上述两项活动时,将在活动A上调用onActivityResult()。通过为图库活动指定requestCode的{​​{1}}和您的“朋友选择器”,您知道在startActivityForResult()中要执行的操作。

另请注意,onActivityResult()不需要复杂的方案。您可以分别为图库和朋友选择器传递值requestCode1

答案 1 :(得分:1)

区分不同的结果。你可以使用不同的意图来启动每个Activity,通常你有这样的常量:

ACTIVITY_RESULT_INTENT_1 = 1
ACTIVITY_RESULT_INTENT_2 = 2

因此,如果您将其中一个传递给startActivityForResult(),那么它也会返回这些请求代码,以允许您使用您想要的任何逻辑。

答案 2 :(得分:0)

来自the reference

  

如果> = 0,当活动退出时,此代码将在onActivityResult()中返回。

所以,它为了你自己的利益。只需设置代码 - 如果需要,可以使用ENUM设置一些正确的返回值。 :)

答案 3 :(得分:0)

根据documentation

  

requestCode如果> = 0,当活动退出时,将在onActivityResult()中返回此代码。