Android:requestCode和resultCode

时间:2011-08-08 17:19:39

标签: android startactivityforresult

我想知道我是否正确理解requestCode和resultCode的概念?基本上,我有一个与活动相关的任意整数(requestCode)。例如,在Notepad tutorial中,我们有

private static final int ACTIVITY_CREATE=0;
private static final int ACTIVITY_EDIT=1;

然后我们使用startActivityforResult(intent,requestCode)来启动一个活动,例如“创建笔记”活动。我们在该活动中执行某些操作并返回resultCode。

在父活动中,我们使用onActivityResult(requestCode,resultCode,intent)检测resultCode。然后我们可以使用requestCode来查看返回的活动,使用resultCode查看该活动的结果,以及使用intent的“extras”来获取返回的数据。


内置的resultCodes有什么特别之处,比如RESULT_CANCELED? documentation on the developer site似乎表明内置结果只是整数。

在我看来,这可能会变得非常混乱?例如,如果我有10个可能的活动要启动,那么我必须有一个巨型 onActivityResult函数来检查返回哪个活动,不是吗?

2 个答案:

答案 0 :(得分:12)

  

内置的resultCodes有什么特别之处,比如   RESULT_CANCELED?开发人员网站上的文档似乎是   建议内置结果只是整数。

是。这些代码是“标准”响应。例如,如果您启动的活动返回RESULT_CANCELED(特别是操作系统活动或标准应用程序,如相机),则表示活动已取消。应根据文档解释这些标准结果。事实上,您的活动应该使用这些标准结果(以便其他应用程序开发人员更容易开始您的活动),除非有充分的理由不这样做。

  

在我看来,这可能会变得非常混乱?例如,如果我   有10个可能的活动要发射,然后我必须有一个巨人   onActivityResult函数用于检查返回的活动,   不是吗?

是。使用switch语句来处理这些。

答案 1 :(得分:1)

整数没有什么特别之处 - 这些常量只是一个约定。你的onActivityResult可以是一个switch语句,它将结果分派给处理它们的方法......不需要它是巨大的。当然,应该使用符号常量,因为它看起来像你。