I'm using the new Android injection from dagger 2.11, and i have this simple module :
@Module
public class MyModule{
@MyScope
@Provides
SomeClass provideSomeClass(Context context){
return new SomeClass(context);
}
}
as you can see i need to pass a context to SomeClass constructor. but i don't know how to do this.
without Android injector i can do it like below :
@Module
public class MyModule{
private Context context;
public MyModule(Context context){
this.context = context;
}
@MyScope
@Provides
Context provideContext(){return context;}
@MyScope
@Provides
SomeClass provideSomeClass(Context context){
return new SomeClass(context);
}
}
but since i can't access to MyModule with AndroidInjection.inject() i can't pass context to it.
If your module is attached to the application as a singleton, you can use Application Context directly. Or you may want to attach your module to your activity/fragment. In that case, you don't have to pass any parameter to your module because dagger is already passed your activity/fragment to your attached module. I want to show you as a simple sample.
Let say you have
MainActivityandMainActivityModule. To get your activity context to your MainActivityModule is that callingAndroidInjection.inject(this);in your MainActivity (before super.onCreate()). Here is that module which has context.