Здравствуйте!
Я у себя в проекте использую Dagger 2. У меня в проекте есть несколько модулей.
И у меня есть BaseActivityModule, который подключается каждому модулю Activity.
Как получить AppCompatActivity в BaseActivityModule.
При компиляции проекта получаю такую ошибку
error: [Dagger/MissingBinding] [dagger.android.AndroidInjector.inject(T)] android.app.AlertDialog cannot be provided without an @Inject constructor or an @Provides-annotated method.
public abstract interface AppComponent {
^
android.app.AlertDialog is injected at
com.example.laptop.daggerexample.ui.main.view.MainActivity.alertDialog
com.example.laptop.daggerexample.ui.main.view.MainActivity is injected at
dagger.android.AndroidInjector.inject(T)
component path: com.example.laptop.daggerexample.di.component.AppComponent ? com.example.laptop.daggerexample.di.builder.ActivityBuilder_BindMainActivity.MainActivitySubcomponent
Пример ниже модули в проекте:
ActivityBuilder @Module
abstract class ActivityBuilder {
@ContributesAndroidInjector(modules = [(MainActivityModule::class)])
abstract fun bindMainActivity(): MainActivity
}
AppModule@Module
abstract class AppModule{
@Provides
@Singleton
fun provideContext(application: Application): Context = application
}
BaseActivityModule @Module
class BaseActivityModule {
@Provides
fun provideAlertDialog(activity: AppCompatActivity)= AlertDialog.Builder(activity).create()
}
MainActivityModule@Module(includes = [(BaseActivityModule::class)])
class MainActivityModule {
@Provides
fun provideMainMVPView(activity: MainActivity): MainMVPView = activity
@Provides
fun provideMainMVPPresenter(presenter: MainPresenter<MainMVPView>): MainMVPPresenter<MainMVPView> = presenter
}