我想知道我是否正确理解requestCode和resultCode的概念?基本上,我有一个与活动相关联的任意整数(requestCode)。例如,在记事本教程中,我们有
private static final int ACTIVITY_CREATE=0;
private static final int ACTIVITY_EDIT=1;
然后我们使用startActivityforResult(intent, requestCode)来启动一个活动,例如"创建笔记"活动。我们在那个活动中做一些事情并返回resultCode。
在父activity中,我们用onActivityResult(requestCode, resultCode, intent)检测resultCode。然后,我们可以使用requestCode来查看正在返回的活动,使用resultCode来查看该活动的结果,以及使用intent的"extras"来获取返回的数据。
有什么特别的内置resultCodes,如RESULT_CANCELED?开发人员站点上的文档似乎表明,内置结果只是整数。
在我看来,这可能会变得非常混乱?例如,如果我有10个可能的活动要启动,那么我必须有一个巨大的 onActivityResult函数来检查哪个活动被返回,不是吗?
内置的resultCodes有什么特别的吗RESULT_CANCELED吗?开发人员网站上的文档似乎建议内置结果是简单的整数。
是的。这些代码是"标准"响应。例如,如果您启动的活动返回RESULT_CANCELED
(特别是操作系统活动或标准应用程序,如Camera),这意味着该活动被取消。这些标准结果应根据文件进行解释。事实上,你的活动应该使用这些标准结果(这样其他应用程序开发人员可以更容易地启动你的活动),除非有强烈的理由不这样做。
在我看来,这可能会变得非常混乱?例如,如果我有10个可能的活动要启动,那么我就必须有一个巨人onActivityResult函数检查哪个活动被返回,不是我?
是的。使用switch语句来处理这些
整数没有什么特别之处——这些常量只是一种约定。你的onActivityResult可以是一个单独的switch语句,它将结果分派给处理它们的方法…不需要太大。当然,应该使用符号常量,就像你看起来的那样。