OnActivityResult

OnActivityResult annotation compiler for Android

License

License

GroupId

GroupId

com.vanniktech
ArtifactId

ArtifactId

onactivityresult
Last Version

Last Version

0.7.0
Release Date

Release Date

Type

Type

aar
Description

Description

OnActivityResult
OnActivityResult annotation compiler for Android
Project URL

Project URL

https://github.com/vanniktech/OnActivityResult
Source Code Management

Source Code Management

https://github.com/vanniktech/OnActivityResult

Download onactivityresult

How to add to project

<!-- https://jarcasting.com/artifacts/com.vanniktech/onactivityresult/ -->
<dependency>
    <groupId>com.vanniktech</groupId>
    <artifactId>onactivityresult</artifactId>
    <version>0.7.0</version>
    <type>aar</type>
</dependency>
// https://jarcasting.com/artifacts/com.vanniktech/onactivityresult/
implementation 'com.vanniktech:onactivityresult:0.7.0'
// https://jarcasting.com/artifacts/com.vanniktech/onactivityresult/
implementation ("com.vanniktech:onactivityresult:0.7.0")
'com.vanniktech:onactivityresult:aar:0.7.0'
<dependency org="com.vanniktech" name="onactivityresult" rev="0.7.0">
  <artifact name="onactivityresult" type="aar" />
</dependency>
@Grapes(
@Grab(group='com.vanniktech', module='onactivityresult', version='0.7.0')
)
libraryDependencies += "com.vanniktech" % "onactivityresult" % "0.7.0"
[com.vanniktech/onactivityresult "0.7.0"]

Dependencies

compile (2)

Group / Artifact Type Version
com.vanniktech : onactivityresult-annotations jar 0.7.0
com.android.support » support-annotations jar 27.0.2

Project Modules

There are no modules declared in this project.

OnActivityResult

  • Generates boilerplate code for OnActivityResult callbacks and lets you focus on what matters.
  • Generated code is fully traceable and debuggable.
  • Everything is generated during compile time with appropriate errors / warnings.
  • No reflection used!

Gradle

dependencies {
  compile 'com.vanniktech:onactivityresult:0.7.0'
  annotationProcessor 'com.vanniktech:onactivityresult-compiler:0.7.0'
}

Snapshots

compile 'com.vanniktech:onactivityresult:0.8.0-SNAPSHOT'
annotationProcessor 'com.vanniktech:onactivityresult-compiler:0.8.0-SNAPSHOT'

Modules are located on Maven Central.

Example

Override onActivityResult in your Activity / Fragment and call ActivityResult.onResult

@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
  super.onActivityResult(requestCode, resultCode, data);

  ActivityResult.onResult(requestCode, resultCode, data).into(this);
}

Annotate your methods and get the callback

@OnActivityResult(requestCode = 33)
void onActivityResultTestActivity() { /* Do something */ }

@OnActivityResult(requestCode = 1, resultCodes = { Activity.RESULT_OK })
void onActivityResultActivityOk() { /* Only do something when ok */ }

@OnActivityResult(requestCode = 1, resultCodes = { Activity.RESULT_CANCELED })
void onActivityResultActivityCanceled() { /* Only do something when canceled */ }

@OnActivityResult(requestCode = 2)
void onActivityResultPickImage(final int resultCode, final Intent intent) { /* Do something */ }

Various parameters are supported:

  • none
  • int
  • Intent
  • int, Intent
  • Intent, int

Where int parameters will get the resultCode and Intent parameters will get the Intent.

Note: Each annotated method shall only have one int and / or Intent variable.

In addition to that other parameter annotations are supported like:

Some examples can be found here.

The @Extra annotation is generic and works with every type mentioned above. In addition it also supports custom types which are implementing Parcelable or Serializable.

The disadvantage of @Extra is that it won't let you specify a default value therefore the other annotations do exist and should be used when needed.

Advantages over AfterMath

  • Gives you compile error(s) when using invalid RequestCode
  • Annotated method does not require resultCode and Intent to be present. It'll work with every combination (no params, resultCode, Intent, resultCode & Intent, Intent & resultCode). In addition also all custom parameter annotations can be used.
  • The annotations are on mavenCentral and available as a separate artifact
  • More detailed error messages
  • Inheritance support
  • @IntentData annotation with @NonNull & @Nullable support.
  • Specify resultCodes with e.g. resultCodes = { Activity.RESULT_OK }.
  • @Extra, @ExtraBoolean, @ExtraByte, @ExtraChar, @ExtraDouble, @ExtraFloat, @ExtraInt, @ExtraLong, @ExtraShort, @ExtraString annotations.

Thanks

Thanks to JakeWharton's ButterKnife

Thanks to Hannes Dorfmann's Annotation Processing 101

License

Copyright (C) 2015 Vanniktech - Niklas Baudy

Licensed under the Apache License, Version 2.0

Versions

Version
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0