有人请解释RESULT_FIRST_USER

Kat*_*lon 29 android android-intent android-activity

我不理解RESULT_FIRST_USER的含义,价值或重要性,除了我自己的结果代码必须大于1.有人请解释一下吗?RESULT_OK和RESULT_CANCELED对于说英语的人来说非常有意义.但是android的世界里有什么是RESULT_FIRST_USER?所有文件都说明了这一点

Start of user-defined activity results.
Run Code Online (Sandbox Code Playgroud)

Avi*_*mer 13

这个问题的答案实际上是来自@CommonsWare和@Chris的评论的组合.因此,为了后代,我将巩固评论并在一个地方提供.

基本上,有两个预定义的常量requestCode,它们是Activity.RESULT_OKActivity.RESULT_CANCELLED.但是,Android开发人员还可以使用偏移量为其应用设置自定义代码Activity.RESULT_FIRST_USER.这样做可确保在操作系统级别和应用程序级别设置的常量之间不会发生冲突.

纯粹,我认为,我认为FIRST USER后缀是指开发人员 - 就​​像最终消费者如何引用所述产品的消费者一样 - 谁是应用用户之前的第一批用户.

以下是如何使用此偏移量的示例,

public static final int MY_RESULT_CODE = Activity.RESULT_FIRST_USER + 1;
Run Code Online (Sandbox Code Playgroud)


小智 11

当一个活动结束时,它可以调用setResult(int)将数据返回给它的父项.

必须始终提供结果代码,这可以是标准结果

  • RESULT_CANCELED (标准活动结果:操作取消.常数值:0)
  • RESULT_OK(标准活动结果:操作成功.常量值:-1),或从RESULT_FIRST_USER(用户定义的活动结果开始.常量值:1)开始的任何自定义值.此外,它还可以选择返回包含所需的任何其他数据的Intent.

因此,由于你必须提供结果代码Android,因此你可以说"帮助"一下:请说明这个活动的结果代码是否正常,取消或者你有自己定制的结果.


And*_*oke 2

当您完成一个活动时,您可以调用setResult(RESULT_CODE)将数据发送回另一个活动。如果您不调用此方法,则默认值将为RESULT_CANCELLED(等于0

返回数据示例:

Intent intent= new Intent();
intent.putExtra("data",data);
setResult(YOUR_RESULT_CODE,intent);
finish();
Run Code Online (Sandbox Code Playgroud)

  • @KatedralPillon:“为什么是世界上的 FIRST_USER?” -- 在多方(例如,库作者和应用程序作者)可能想要定义这些代码的情况下,这是管理整数返回代码的相当常见的约定。我记得 20-25 年前在 C/C++ 中看到过它的使用。基本上,任何低于“RESULT_FIRST_USER”的值都是为框架保留的,任何以“RESULT_FIRST_USER”开头的值都可供应用程序使用,没有冲突的风险。在 Android 中你看不到太多,至少在 Java 级别是这样。 (56认同)
  • 您的应用程序应该使用 RESULT_FIRST_USER 来开始定义代码,如下所示: class MyActivity extends Activity { public static Final int RESULT_THING1_FAILED = RESULT_FIRST_USER + 1; 公共静态最终 int RESULT_THING2_FAILED = RESULT_FIRST_USER + 2; ... } 这样,如果他们保留更多代码,您的代码就不会损坏。 (8认同)
  • 那么他们为什么不直接将其称为 RESULT_EMPTY 或类似的名称呢?为什么是FIRST_USER?这个名字听起来好像还有更多的故事。FIRST_USER 是否意味着 Android 生态系统或软件工程中我不知道的东西?当然,我很感谢你的回复。但这个名字很可疑,你不觉得吗? (5认同)