I'm new to Dagger and trying to use dagger2 for DI, but looks like it injected a null presenter to my activity. Below is my codes.
public class TasksActivity extends AppCompatActivity {
@Inject
TasksContract.Presenter mTasksPresenter;
......
@Override
protected void onCreate(Bundle savedInstanceState) {
... ...
DaggerTasksComponent.builder()
.appComponent(MyApp.getAppComponent())
.tasksModule(new TasksModule())
.build()
.inject(this);
... ...
}
Module for TasksActivity:
@Module
public class TasksModule {
@Provides
@ActivityScoped
TasksContract.Presenter providePresenter(TaskDataRepository taskDataRepository, TasksContract.View view) {
return new TasksPresenter(taskDataRepository, view);
}
@Provides
@ActivityScoped
TasksContract.View provideView() {
return new TasksFragment();
}
}
Component for TasksActivity:
@ActivityScoped
@Component (modules = TasksModule.class, dependencies = AppComponent.class)
public interface TasksComponent {
void inject(TasksActivity activity);
}
I also have an AppModule and AppComponent for application level dependency injection such as TaskDataRepository. And annotated them with @Singleton.