Will someone please explain RESULT_FIRST_USER

When an activity ends, it can call setResult(int) to return data back to its parent.

It must always supply a result code, which can be the standard results

  • RESULT_CANCELED (Standard activity result: Operation canceled. Constant Value: 0)
  • RESULT_OK (Standard activity result: operation succeeded. Constant Value: -1), or any custom values starting at RESULT_FIRST_USER (Start of user-defined activity results. Constant Value: 1). In addition, it can optionally return back an Intent containing any additional data it wants.

So, bottom line since you must supply the result code Android "helps' you a bit by saying: please state if the result code of this Activity is OK, CANCELED or you have your own, custom made, result.


The answer to the question is actually the combination of comments from @CommonsWare and @Chris. So, for the sake of progeny, I am going to consolidate the comments and make it available in one place.

Basically, there are two predefined constants for the requestCode and they are Activity.RESULT_OK and Activity.RESULT_CANCELLED. However, android developers can also set custom codes for their apps by using the offset Activity.RESULT_FIRST_USER. Doing so ensures that there are no clashes between constants set at the OS level and the app level.

Purely, my opinion, I think that the FIRST USER suffix is meant to refer to developers – just like how end consumer refers to consumers of a said product – who are the first users before the app users.

Below is an example of how you can use this offset,

public static final int MY_RESULT_CODE = Activity.RESULT_FIRST_USER + 1;