https://github.com/vanniktech/onactivityresult
OnActivityResult annotation compiler for Android
https://github.com/vanniktech/onactivityresult
android annotation-processor onactivityresult
Last synced: 11 months ago
JSON representation
OnActivityResult annotation compiler for Android
- Host: GitHub
- URL: https://github.com/vanniktech/onactivityresult
- Owner: vanniktech
- License: apache-2.0
- Created: 2015-12-12T10:14:00.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2022-06-19T09:36:14.000Z (over 3 years ago)
- Last Synced: 2025-03-29T05:05:32.381Z (12 months ago)
- Topics: android, annotation-processor, onactivityresult
- Language: Java
- Homepage: http://vanniktech.com
- Size: 484 KB
- Stars: 459
- Watchers: 15
- Forks: 25
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# 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
```groovy
dependencies {
compile 'com.vanniktech:onactivityresult:0.7.0'
annotationProcessor 'com.vanniktech:onactivityresult-compiler:0.7.0'
}
```
### Snapshots
```groovy
compile 'com.vanniktech:onactivityresult:0.8.0-SNAPSHOT'
annotationProcessor 'com.vanniktech:onactivityresult-compiler:0.8.0-SNAPSHOT'
```
Modules are located on [Maven Central](https://oss.sonatype.org/#nexus-search;quick~onactivityresult).
## Example
Override `onActivityResult` in your Activity / Fragment and call `ActivityResult.onResult`
```java
@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
```java
@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:
* [@IntentData](onactivityresult-annotations/src/main/java/onactivityresult/IntentData.java) `Uri uri`
* [@Extra](onactivityresult-annotations/src/main/java/onactivityresult/Extra.java) `type var`
* [@ExtraBoolean](onactivityresult-annotations/src/main/java/onactivityresult/ExtraBoolean.java) `boolean booleanVar`
* [@ExtraByte](onactivityresult-annotations/src/main/java/onactivityresult/ExtraByte.java) `byte byteVar`
* [@ExtraChar](onactivityresult-annotations/src/main/java/onactivityresult/ExtraChar.java) `char charVar`
* [@ExtraDouble](onactivityresult-annotations/src/main/java/onactivityresult/ExtraDouble.java) `double doubleVar`
* [@ExtraFloat](onactivityresult-annotations/src/main/java/onactivityresult/ExtraFloat.java) `float floatVar`
* [@ExtraInt](onactivityresult-annotations/src/main/java/onactivityresult/ExtraInt.java) `int intVar`
* [@ExtraLong](onactivityresult-annotations/src/main/java/onactivityresult/ExtraLong.java) `long longVar`
* [@ExtraShort](onactivityresult-annotations/src/main/java/onactivityresult/ExtraShort.java) `short shortVar`
* [@ExtraString](onactivityresult-annotations/src/main/java/onactivityresult/ExtraString.java) `String stringVar`
Some examples can be found [here](./onactivityresult-sample/src/main/java/com/vanniktech/onactivityresult/sample/MainActivity.java).
The [@Extra](onactivityresult-annotations/src/main/java/onactivityresult/Extra.java) 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](onactivityresult-annotations/src/main/java/onactivityresult/Extra.java) 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](https://github.com/MichaelEvans/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](onactivityresult-annotations/src/main/java/onactivityresult/IntentData.java) annotation with @NonNull & @Nullable support.
* Specify resultCodes with e.g. `resultCodes = { Activity.RESULT_OK }`.
* [@Extra](onactivityresult-annotations/src/main/java/onactivityresult/Extra.java), [@ExtraBoolean](onactivityresult-annotations/src/main/java/onactivityresult/ExtraBoolean.java), [@ExtraByte](onactivityresult-annotations/src/main/java/onactivityresult/ExtraByte.java), [@ExtraChar](onactivityresult-annotations/src/main/java/onactivityresult/ExtraChar.java), [@ExtraDouble](onactivityresult-annotations/src/main/java/onactivityresult/ExtraDouble.java), [@ExtraFloat](onactivityresult-annotations/src/main/java/onactivityresult/ExtraFloat.java), [@ExtraInt](onactivityresult-annotations/src/main/java/onactivityresult/ExtraInt.java), [@ExtraLong](onactivityresult-annotations/src/main/java/onactivityresult/ExtraLong.java), [@ExtraShort](onactivityresult-annotations/src/main/java/onactivityresult/ExtraShort.java), [@ExtraString](onactivityresult-annotations/src/main/java/onactivityresult/ExtraString.java) annotations.
## Thanks
[Thanks to JakeWharton's ButterKnife](https://github.com/JakeWharton/butterknife)
[Thanks to Hannes Dorfmann's Annotation Processing 101](http://hannesdorfmann.com/annotation-processing/annotationprocessing101)
# License
Copyright (C) 2015 Vanniktech - Niklas Baudy
Licensed under the Apache License, Version 2.0