Quelqu'un m'aide à souligner pourquoi mon code ne fonctionne pas. J'essaie de comprendre, mais je ne peux pas trouver le problème je tente d'injecter le présentateur, mais je suis l'erreur:L'injection de dague ne fonctionne pas dans kotlin
lateinit property appComponent has not been initialized
Il semble que le présentateur a été pas injecté AppModule
@Module
class AppModule {
@Provides @Singleton
fun provideMainPresenter(): MainActivityContract.Presenter = MainActivityPresenter()
}
AppComponent
@Singleton
@Component(modules = arrayOf(AppModule::class))
interface AppComponent {
fun inject(target: MainActivity)
}
App
class App: Application() {
companion object {
lateinit var appComponent: AppComponent
}
override fun onCreate() {
super.onCreate()
appComponent = initDagger()
}
fun initDagger() = DaggerAppComponent.create()
}
C'est le MainActivity où je veux injecter présentateur
class MainActivity : AppCompatActivity(), MainActivityContract.View, AnkoLogger {
@Inject
lateinit var presenter: MainActivityContract.Presenter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
App.appComponent.inject(this)
presenter.attachView(this)
}
}
C'est MainActivityPresenter qui implémente MainActivityContract.Presenter
class MainActivityPresenter: MainActivityContract.Presenter {
var view: MainActivityContract.View? = null
override fun attachView(view: MainActivityContract.View) {
this.view = view
}
override fun detachView() {
view = null
}
override fun performToast(text: String) {
}
}
Edit: Je réussi à résoudre moi-même: Pour tous débutant Android comme je suis. Lorsque nous déclarons App étend application. Nous devons le déclarer dans le manifeste ainsi
<application
android:name=".App"
/>
quel type d'erreur ? – Blackbelt
pourquoi ne fonctionne pas? s'il vous plaît ajouter la trace de pile d'erreur ou quelque chose ... –
Mettre à jour ma question. Retrofit ne peut pas fournir le présentateur –