Skip to content

Commit

Permalink
Prepare v0.3.0
Browse files Browse the repository at this point in the history
Signed-off-by: shaishavgandhi05 <shaishgandhi@gmail.com>
  • Loading branch information
ShaishavGandhi committed Jun 27, 2018
1 parent fac3f1f commit 019329d
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 33 deletions.
87 changes: 55 additions & 32 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ Navigating to another activity requires a lot of boilerplate code in both activi

Source activity:
```java
public final class ActivityA extends Activity {
public final class MainActivity extends Activity {

protected void openActivityB() {
Intent intent = new Intent(context, ActivityB.class);
protected void openDetailActivity() {
Intent intent = new Intent(context, DetailActivity.class);
intent.putParcelableExtra("user", user);
intent.putString("source", source);
intent.putString("title", title);
Expand All @@ -46,7 +46,7 @@ The destination activity is even more complicated:

```java

public final class ActivityB extends Activity {
public final class DetailActivity extends Activity {

String title;
String source;
Expand Down Expand Up @@ -91,24 +91,24 @@ Using the same example:

```java

public final class ActivityC extends Activity {
public final class DetailActivity extends Activity {

@Extra String title; // Annotate with @Extra to tell Navigator that this is required when opening activity
@Extra @Nullable String source; // @Nullable tells Navigator that this is an optional extra
@Extra String subtitle;

@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Navigator.bind(this); // Automatically bind extras
DetailActivityBinder.bind(this); // Automatically bind extras
}
}
```

```java
public final class ActivityA extends Activity {
public final class MainActivity extends Activity {

protected void openActivityC() {
ActivityCBuilder(title, subtitle) // Required extras by ActivityC go in constructor
protected void openDetailActivity() {
new DetailActivityBuilder(title, subtitle) // Required extras by ActivityC go in constructor
.setSource(source) // optional extras
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK || Intent.FLAG_ACTIVITY_CLEAR_TASK)
.start(this);
Expand All @@ -119,21 +119,6 @@ public final class ActivityA extends Activity {

The sample example would work in Kotlin as well.

```kotlin

class ActivityC : Activity() {

@Extra lateinit var title: String
@Extra var source: String? = null // null type indicates that it is optional
@Extra lateinit var subtitle: String

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Navigator.bind(this) // Automatically bind extras
}
}
```

## Fragments

The same examples mentioned above work for fragments as well. However, **Navigator is not interested in being a navigation library for fragments**. A whole different library can be written about that.
Expand All @@ -153,20 +138,58 @@ fragment.setArguments(arguments);

#### Bind arguments

```kotlin
class DetailFragment : Fragment() {
```java
class DetailFragment extends Fragment {

@Extra var user: User? = null
@Extra var points: Point? = null
@Extra User user;
@Extra Point points;

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Navigator.bind(this)
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DetailFragmentBinder.bind(this);
}

}
```

## Kotlin

Navigator has first class support for Kotlin and it's language features. If you use `kapt` as your annotation processor,
Navigator will generate handy Kotlin extensions for you which simplify the API.


#### Bind arguments

```kotlin

class DetailActivity : Activity() {

@Extra lateinit var title: String
@Extra var source: String? = null // null type indicates that it is optional
@Extra lateinit var subtitle: String

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
bind() // Simply call bind extension on DetailActivity
}
}
```

Using kapt will also simplify your API when using it in a Java class.

```java
public class DetailActivity extends Activity {

@Extra String message;

@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DetailActivityNavigator.bind(this); // Generated kotlin extension with a nicer API
}

}
```

## Advanced Usage

Navigator exposes most ways to start an activity.
Expand Down Expand Up @@ -202,7 +225,7 @@ as `@Extra` in an existing class, which already has logic to parse out the Bundl

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Navigator.bind(this);
MyActivityNavigator.bind(this);
}
}
```
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ org.gradle.daemon=true
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
VERSION_NAME=0.3.0-SNAPSHOT
VERSION_NAME=0.3.0
GROUP=com.shaishavgandhi.navigator

POM_DESCRIPTION=Annotation processor that eliminates navigation boilerplate
Expand Down

0 comments on commit 019329d

Please sign in to comment.