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