3

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

感谢您的帮助!

4

4 回答 4

4

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

您可能会遇到一个 Activity 需要调用其他几个以获得结果的情况,通过int为每个 Activity 指定一个唯一的,您可以在获得结果时确定要执行的正确操作。

编辑:这是一个例子。

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

您希望这两个活动都返回用户选择的数据。onActivityResult()当用户完成上述两个活动时,将在活动 A 上调用。通过为画廊活动指定requestCodeforstartActivityForResult()和您的“朋友选择器”,您就知道在onActivityResult().

另外,请注意,您不需要复杂的requestCode. 您可以分别传入画廊和朋友选择器的值12

于 2012-08-06T14:00:34.353 回答
1

这是为了区分不同的结果。您可能会使用不同的意图来启动每个意图Activity,通常您有如下常量:

ACTIVITY_RESULT_INTENT_1 = 1
ACTIVITY_RESULT_INTENT_2 = 2

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

于 2012-08-06T14:29:04.780 回答
0

参考

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

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

于 2012-08-06T14:00:59.550 回答
0

根据文档

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

于 2012-08-06T14:01:01.720 回答