Now I'm trying to implement a dagger in my project, and I have one problem. The variable that is initialized in the application component is not initialized in my activity. Here is my code. Application:
public class MyApplication extends Application {
private ApplicationComponent applicationComponent;
@Inject
public Context context;
@Override
public void onCreate() {
super.onCreate();
applicationComponent = DaggerApplicationComponent.builder().applicationModule(new ApplicationModule(this)).build();
applicationComponent.inject(this);
}
public ApplicationComponent getApplicationComponent() {
return applicationComponent;
}
}
Here's the context! = Null variable
Activity:
public class MainActivity extends AppCompatActivity {
private ActivityComponent activityComponent;
@Inject
Context context;
@Override
protected void onStart() {
super.onStart();
activityComponent = DaggerActivityComponent.builder()
.activityModule(new ActivityModule(this))
.applicationComponent(((MyApplication) getApplication()).getApplicationComponent())
.build();
activityComponent.inject(this);
}
}
Here context == null.
Dagger:
@Component(modules = {ApplicationModule.class})
public interface ApplicationComponent {
void inject(MyApplication application);
Context getApplicationContext();
}
@Component(modules = {ActivityModule.class}, dependencies = {ApplicationComponent.class})
public interface ActivityComponent {
void inject(MainActivity mainActivity);
}
@Module
public class ApplicationModule {
private Application application;
public ApplicationModule(MyApplication application) {
this.application = application;
}
@Provides
Context provideApplicationContext() {
return application.getApplicationContext();
}
}
@Module
public class ActivityModule {
Activity activity;
public ActivityModule(MainActivity activity) {
this.activity = activity;
}
}
So, the dagger provides "Context" only in the application class, but does not provide it in the MainActivity class. What am I doing wrong? Maybe I need to change something.
Thank!
source
share