除了我的结果代码必须大于1
之外,我不理解RESULT_FIRST_USER的意义、价值或重要性。有人可以解释一下吗?对讲英语的人来说,RESULT_OK和RESULT_CANCELED是很容易理解的。但在Android世界中,RESULT_FIRST_USER是什么意思呢?所有的文档都只是这么说:
Start of user-defined activity results.
除了我的结果代码必须大于1
之外,我不理解RESULT_FIRST_USER的意义、价值或重要性。有人可以解释一下吗?对讲英语的人来说,RESULT_OK和RESULT_CANCELED是很容易理解的。但在Android世界中,RESULT_FIRST_USER是什么意思呢?所有的文档都只是这么说:
Start of user-defined activity results.
实际上,这个问题的答案是来自于@CommonsWare和@Chris的评论的结合。因此,为了后代的利益,我将整合这些评论,让它们在一个地方可用。
基本上,有两个预定义的常量用于requestCode
,它们是Activity.RESULT_OK
和Activity.RESULT_CANCELLED
。然而,安卓开发者也可以通过使用偏移量Activity.RESULT_FIRST_USER
来设置他们应用程序的自定义代码。这样做确保了操作系统级别和应用程序级别设置常量之间没有冲突。
纯属我的意见,我认为FIRST USER
后缀意味着指的是开发者——就像最终消费者指的是所述产品的消费者一样——他们是应用程序用户之前的第一批用户。
以下是如何使用这个偏移量的示例:
public static final int MY_RESULT_CODE = Activity.RESULT_FIRST_USER + 1;
当一个活动结束时,它可以调用setResult(int)
来将数据返回给它的父级。
它必须始终提供结果代码,可以是标准结果:
RESULT_CANCELED
(标准活动结果:操作已取消。常量值:0)RESULT_OK
(标准活动结果:操作成功。常量值:-1),或任何自定义值,以RESULT_FIRST_USER
开头(用户定义的活动结果开始。常量值:1)。此外,它还可以可选地返回包含其想要的任何其他数据的Intent。因此,由于您必须提供结果代码,Android会“帮助”您一些,告诉您:请声明此Activity的结果代码是OK、CANCELED还是您自己制定的自定义结果。
活动结果是一个32位整数。可能的值分为三个范围:
RESULT_FIRST_USER
标识用户定义范围中的第一个值。以下示例定义显示系统和用户定义值如何组合在一起:
public static final int RESULT_OK = -1; // Defined by Android. You don't write this code.
public static final int RESULT_CANCELED = 0; // Defined by Android. You don't write this code.
public static final int RESULT_ENDED_GAME = RESULT_FIRST_USER + 0; // Defined by an app.
public static final int RESULT_ACTIVATED_RADAR = RESULT_FIRST_USER + 1; // Defined by an app.
public static final int RESULT_LAUNCHED_ROCKETS = RESULT_FIRST_USER + 2; // Defined by an app.
setResult(RESULT_CODE)
将数据发送回另一个活动。如果您不调用此方法,则默认值将是RESULT_CANCELLED
(等于0
)。Intent intent= new Intent();
intent.putExtra("data",data);
setResult(YOUR_RESULT_CODE,intent);
finish();
RESULT_OK
是 -1,而 RESULT_CANCELED
是 0。 - Andrew Brooke