簡體   English   中英

在這種情況下,如何讓 Dagger 2 自動生成我需要的代碼?

[英]How can I get Dagger 2 to auto-generate the code I need in this case?

在我的應用程序 class 中,我試圖聲明變量,然后將其注入到我的片段中。

根據我在其他項目中的經驗, DaggerEventComponentImp 應該為這種情況自動生成,但事實並非如此。

有人能幫助我嗎? 非常感謝您提前。

構建.gradle(應用程序)

implementation 'com.google.dagger:dagger:2.41'
implementation 'com.google.dagger:dagger-android-support:2.40.5'
annotationProcessor "com.google.dagger:dagger-compiler:2.40.5"

TerrilerosApp

class TerrilerosApp : Application() {

    val eventComponent: EventComponent by lazy {
        DaggerEventComponentImp // This is how it should look, but it gives an error when it doesn't autogenerate
            .builder()
            .with(this)
            .build()
    }

    override fun onCreate() {
        super.onCreate()
        instance = this
    }

    companion object {
        private lateinit var instance: TerrilerosApp
        fun getInstance() = instance
    }
}

事件模塊

@Module
object EventModule {

    @Provides
    @Singleton
    fun eventWebServiceProvider(retrofit: Retrofit): EventsWS {
        return retrofit.create(EventsWS::class.java)
    }

    @Provides
    @Singleton
    fun eventSourceProvider(
        service: EventsWS
    ): EventsDataSource {
        return EventsDataSourceImpl(service)
    }

    @Provides
    @Singleton
    fun eventRepositoryProvider(dataSource: EventsDataSource): EventRepository {
        return EventRepositoryImpl(dataSource)
    }

    @Singleton
    @Provides
    fun eventRetrofitProvider(): Retrofit {
        return Retrofit.Builder()
            .baseUrl(NetworkConfig.BASE_URL)
            .client(
                OkHttpClient()
                    .newBuilder()
                    .build()
            )
            .addConverterFactory(MoshiConverterFactory.create())
            .build()
    }
}

事件組件

interface EventComponent {

    fun inject(eventFragment: EventFragment)
}

@Singleton
@Component(
    modules = [EventModule::class]
)
interface EventComponentImp : EventComponent {

    @Component.Builder
    interface Builder {
        fun build(): EventComponent
    }
}

修正:我使用的是最新版本的 Kotlin,與我使用的 Dagger 版本沖突。 我已經下載了 Kotlin 版本,它可以正常工作。 官方文檔中沒有報道,但是我和同事做過測試,同樣的事情發生在他們身上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM