11

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

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

然后我们使用 startActivityforResult(intent, requestCode) 来启动一个活动,例如“创建笔记”活动。我们在那个活动中做一些事情并返回一个结果代码。

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


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

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

4

2 回答 2

12

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

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

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

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

于 2011-08-08T17:24:40.037 回答
1

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

于 2011-08-08T17:24:07.807 回答