Я использую Dagger 2 в своем проекте. У меня есть несколько модулей в проекте.
И у меня есть BaseActivityModule, который подключается к каждому модулю деятельности.
Как получить AppCompatActivity в BaseActivityModule.
При компиляции проекта я получаю эту ошибку
ошибка: [Dagger / MissingBinding] [dagger.android.AndroidInjector.inject (T)] android.app.AlertDialog не может быть предоставлен без конструктора @Inject или метода с аннотацией @ Provides.
открытый абстрактный интерфейс AppComponent {
^
android.app.AlertDialog вводится в
com.example.laptop.daggerexample.ui.main.view.MainActivity.alertDialog
com.example.laptop.daggerexample.ui.main.view.MainActivity вводится в
dagger.android.AndroidInjector.inject (Т)
Путь к компоненту: 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
}