I have 3 classes in my simple project using dagger:
public class MyActivity extends Activity {
@Inject
public MyController controller;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.search);
super.onCreate(savedInstanceState);
objectGraph = ObjectGraph.create(new BootstrapModule(this));
objectGraph.inject(this);
System.out.println("MyActivity.controller: " + controller);
}
}
public class MyController {
@Inject
public EventDispatcher eventDispatcher;
public MyController()
{
System.out.println("MyController.eventDispatcher: " + eventDispatcher); // THIS IS NULL!
}
}
@Module(injects = {
MyActivity.class,
MyController.class
})
public class BootstrapModule {
private Context context;
public BootstrapModule(Context context){
this.context = context;
}
@Provides
@Singleton
public EventDispatcher provideEventDispatcher(){
return new EventDispatcher();
}
@Provides
@Singleton
public Context provideContext(){
return context;
}
}
Now my problem is that on MyActivity controller is created by dagger after objectGraph.inject(this) method call. But in MyController eventDispatcher is not created. Do I have call again from Activity objectGraph.inject(controller) to get created EventDispatcher by dagger? Should it be done automaticly?