Dagger:
@Moduleclass AppModule (private val context: Application) {
@Provides @Singleton fun provideContext(): Context = context
}
@Singleton@Component(modules = [AppModule::class])
interface AppComponent {
fun inject (presenter: AuthPresenter)
}
class App: Application() {
override fun onCreate() {
super.onCreate()
DI.appComponent = DaggerAppComponent.builder()
.appModule(AppModule(this))
.build()
}
}
Presenter and View:
@InjectViewStateclass AuthPresenter
@Inject constructor(context: Context): MvpPresenter<AuthView>() {
...
}
class AuthFragment : MvpAppCompatFragment(R.layout.fragment_auth), AuthView {
@Inject lateinit var presenterProvider: Provider<AuthPresenter>
private val presenter by moxyPresenter { presenterProvider.get() }
}