iammert / dagger-android-injection

Sample project explains Dependency Injection in Android using dagger-android framework.
515 stars 130 forks source link

How does MainActivityComponent get a MainActivity context? #1

Open nikiJava opened 7 years ago

nikiJava commented 7 years ago

How does MainActivityComponent get a MainActivity context? We can use @BindsInstance method in inner Builder interface in MainActivityComponent (Subcomponent) and specify MainActivity (or Context) as parameter or just send MainActivity's Context in constructor of MainActvityModule. But I can not find where in your sample app you send the MainActivity's context. Could you explain me, please?

iammert commented 7 years ago

You don't need to do it. Dagger is already doing that for your. You can directly use your MainActivity in you module.

public class MainActivityModule{
       @Provides
       public MainView providesMainView(MainActivity activity) {...}
}
ghost commented 7 years ago

I am getting error bellow. what is the problem. I did what you did in post. Error:(29, 10) error: ....ui.main.MainActivityComponent.Builder cannot be provided without an @Provides-annotated method......ui.main.MainActivityComponent.Builder is injected at .......ActivityBuilder.bindMainActivity(builder)java.util.Map<java.lang.Class<? extends android.app.Activity>,javax.inject.Provider<dagger.android.AndroidInjector.Factory<? extends android.app.Activity>>> is injected atdagger.android.DispatchingAndroidInjector.(injectorFactories)dagger.android.DispatchingAndroidInjector is injected at ....MYApp.activityDispatchingAndroidInjector ....MYApp is injected at .....di.AppComponent.inject(app)