我正在关注使用“startActivityForResult”函数的教程。我知道为什么要使用这个函数,如果我们想使用返回的数据,我们使用 onActivityResult() 函数。我想知道的是,为什么我们将 Integer 传递给 startActivityForResult() 函数?它在哪里使用?
感谢您的帮助!
当您开始的 Activity 完成时,第二个参数将传递给onActivityResult()
调用 Activity 的方法。这是为了区分不同的结果。
您可能会遇到一个 Activity 需要调用其他几个以获得结果的情况,通过int
为每个 Activity 指定一个唯一的,您可以在获得结果时确定要执行的正确操作。
编辑:这是一个例子。
假设您有一个屏幕(活动 A),您可以在其中从图库中选择一张图片,然后选择一位朋友将其发送给朋友。您将启动一个活动以通过单击按钮从图库中挑选一张图片,也许您还有一个“朋友选择器”活动,您也可以从活动 A 开始。
您希望这两个活动都返回用户选择的数据。onActivityResult()
当用户完成上述两个活动时,将在活动 A 上调用。通过为画廊活动指定requestCode
forstartActivityForResult()
和您的“朋友选择器”,您就知道在onActivityResult()
.
另外,请注意,您不需要复杂的requestCode
. 您可以分别传入画廊和朋友选择器的值1
和2
。
这是为了区分不同的结果。您可能会使用不同的意图来启动每个意图Activity
,通常您有如下常量:
ACTIVITY_RESULT_INTENT_1 = 1
ACTIVITY_RESULT_INTENT_2 = 2
因此,如果您将其中之一传递给startActivityForResult()
,那么它还将返回这些请求代码以允许您使用所需的任何逻辑。
从参考
如果 >= 0,则活动退出时将在 onActivityResult() 中返回此代码。
所以,这是为了你自己的利益。只需设置一个代码 - 如果您愿意,可以使用 ENUM 设置一些正确的返回值。:)
根据文档
requestCode 如果 >= 0,则活动退出时会在 onActivityResult() 中返回此代码。