OnActivityResult Annotations

OnActivityResult annotation compiler for Android

License

License

GroupId

GroupId

com.vanniktech
ArtifactId

ArtifactId

onactivityresult-annotations
Last Version

Last Version

0.7.0
Release Date

Release Date

Type

Type

jar
Description

Description

OnActivityResult Annotations
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-annotations

How to add to project

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

Dependencies

test (1)

Group / Artifact Type Version
junit : junit jar 4.12

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