Jemand hilft mir, darauf hinzuweisen, warum mein Code nicht funktioniert. Ich versuche, herauszufinden, aber ich kann nicht das Problem herauszufinden Ich versuche Moderator zu injizieren, aber ich habe den Fehler:Dolch-Injektion funktioniert nicht in Kotlin
lateinit property appComponent has not been initialized
Es scheint, dass der Moderator AppModule
@Module
class AppModule {
@Provides @Singleton
fun provideMainPresenter(): MainActivityContract.Presenter = MainActivityPresenter()
}
AppComponent nicht injiziert wurde
@Singleton
@Component(modules = arrayOf(AppModule::class))
interface AppComponent {
fun inject(target: MainActivity)
}
App
Dies ist der MainActivity, wo ich Moderator wollen injizieren
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)
}
}
Dies ist MainActivityPresenter die MainActivityContract.Presenter implementiert
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: ich es geschafft, es selbst zu lösen: Für alle Android Anfänger wie ich bin. Wenn wir App deklarieren, wird die Anwendung erweitert. Wir müssen es in manifest erklären auch
<application
android:name=".App"
/>
welche Art von Fehler ? – Blackbelt
warum funktioniert nicht? Bitte fügen Sie die Fehler-Stack-Trace oder so etwas hinzu ... –
Aktualisieren Sie meine Frage. Retrofit konnte keinen Moderator bereitstellen –