groovy
implementation 'com.google.dagger:dagger-android:2.x'
implementation 'com.google.dagger:dagger-android-support:2.x'
annotationProcessor 'com.google.dagger:dagger-android-processor:2.x'
public class MyDependency {
public void doSomething() {
// do something
}
}
public class MyActivity extends AppCompatActivity {
@Inject
MyDependency myDependency;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AndroidInjection.inject(this);
myDependency.doSomething();
}
}
public class MyApplication extends Application implements HasAndroidInjector {
@Inject
DispatchingAndroidInjector<Object> androidInjector;
@Override
public void onCreate() {
super.onCreate();
DaggerAppComponent.builder()
.application(this)
.build()
.inject(this);
}
@Override
public AndroidInjector<Object> androidInjector() {
return androidInjector;
}
}
@Singleton
@Component(modules = {AndroidInjectionModule.class, AppModule.class})
public interface AppComponent {
void inject(MyApplication application);
@Component.Builder
interface Builder {
@BindsInstance
Builder application(Application application);
AppComponent build();
}
}
@Subcomponent(modules = MyActivityModule.class)
public interface MyActivityComponent extends AndroidInjector<MyActivity> {
@Subcomponent.Builder
abstract class Builder extends AndroidInjector.Builder<MyActivity> {}
}
@Module(subcomponents = MyActivityComponent.class)
public abstract class AppModule {
@Singleton
@Provides
static MyDependency provideMyDependency() {
return new MyDependency();
}
}
@Module
public abstract class MyActivityModule {
@Binds
abstract Context bindContext(MyActivity activity);
}