Skip to content

Instantly share code, notes, and snippets.

@talenguyen
Created November 8, 2017 05:12
Show Gist options
  • Save talenguyen/09ca0d5f8f2857c11541e1cae61f3aca to your computer and use it in GitHub Desktop.
Save talenguyen/09ca0d5f8f2857c11541e1cae61f3aca to your computer and use it in GitHub Desktop.
Daggers configuration

Daggers

Configuration

My minimal configuration would be.

AppComponent

@Singleton
@Component(modules = AppModule.class)
public interface AppComponent {

  ActivityComponent plus(ActivityModule __);
}

ActivityComponent

@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {
}

Application

public class SampleApp extends Application implements AppInjector {

  private AppComponent appComponent;

  @Override
  public void onCreate() {
    super.onCreate();
    appComponent = DaggerAppComponent.builder()
        .appModule(new AppModule(this))
        .build();
    Daggers.installAppInjector(this);
  }

  @Override
  public Object appComponent() {
    return appComponent;
  }

}

BaseActivity

public abstract class BaseActivity extends AppCompatActivity implements ActivityInjector {
  @Override
  public void onCreate(@Nullable final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Daggers.installActivityInjector(this);
  }

  @Override
  protected void onDestroy() {
    Daggers.uninstallActivityInjector(this);
    super.onDestroy();
  }

  @Override
  public Object activityModule() {
    return new ActivityModule(this);
  }
}

Everything is all done.

Usage

Let’s add an activity

Step 1: Add HomeActivity to ActivityModule

@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {

  void inject(HomeActivity __);
}

Step 2: Inject

public class HomeActivity extends BaseActivity {

  // @Inject your dependencies
  @Override
  public void onCreate(@Nullable final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Daggers.inject(this); // so easy
  }
}

Repeat those steps to add your activities or fragments and even custom views.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment