My minimal configuration would be.
@Singleton
@Component(modules = AppModule.class)
public interface AppComponent {
ActivityComponent plus(ActivityModule __);
}
@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {
}
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;
}
}
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.
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.