Невозможно сгенерировать код, созданный Dagger в приложении Android Kotlin - PullRequest
0 голосов
/ 18 апреля 2019

Спасибо за чтение. После некоторых проблем с аннотациями после преобразования Java-приложения в Kotlin я добавил квалификаторы компонентов модулей и области видимости, и он создается после его перестройки. Но я застрял здесь, поскольку хочу использовать DaggerFragmentComponent (FragmentКомпонент), но он не импортирует, так как он не создал этого после перестройки.

У меня есть доступ только к DaggerCollections, но я не хочу выполнять внедрение зависимости ....

FragmentModule:

package com.example.daggerappkotlin.di.module

import com.example.daggerappkotlin.di.qualifier.FragContext
import com.example.daggerappkotlin.ui.HomeFragment
import dagger.Module
import dagger.Provides

@Module
class FragmentModule(internal var fragment: HomeFragment) {

    @FragContext
    @Provides
    internal fun provideFragment(): HomeFragment {
        return fragment
    }


    @FragContext
    @Provides
    internal fun provideConnection(): String {
        return "Connected Ben Mohammad"
    }
}

FragmentComponent:

package com.example.daggerappkotlin.di.component

import android.content.Context
import com.example.daggerappkotlin.di.module.FragmentModule
import com.example.daggerappkotlin.di.qualifier.ApplicationContext
import com.example.daggerappkotlin.di.scope.FragmentScope
import com.example.daggerappkotlin.ui.HomeFragment

import dagger.Component

@FragmentScope
@Component(dependencies = [ApplicationComponent::class], modules = [FragmentModule::class])
interface FragmentComponent {

    @ApplicationContext
    val context: Context

    fun inject(frag: HomeFragment)


}

ApplicationModule:

package com.example.daggerappkotlin.di.module

import android.content.Context
import com.example.daggerappkotlin.MyApplication
import com.example.daggerappkotlin.di.qualifier.ApplicationContext
import com.example.daggerappkotlin.di.qualifier.DatabaseInfo
import com.example.daggerappkotlin.di.qualifier.NetworkInfo
import dagger.Module
import dagger.Provides

@Module
class ApplicationModule(val application: MyApplication) {

    @ApplicationContext
    @Provides
    internal fun provideContext(): Context {
        return application
    }

    @Provides
    @DatabaseInfo
    internal fun provideDatabaseName(): String {
        return "dummy_db"
    }

    @Provides
    @DatabaseInfo
    internal fun provideDatabaseVersion(): Int? {
        return 1
    }

    @Provides
    @NetworkInfo
    internal fun provideApiKey(): String {
        return "SOME_API_KEY"
    }
}

ApplicationComponent:

package com.example.daggerappkotlin.di.component

import android.content.Context
import com.example.daggerappkotlin.MyApplication
import com.example.daggerappkotlin.data.local.DatabaseService
import com.example.daggerappkotlin.data.remote.NetworkService
import com.example.daggerappkotlin.di.module.ApplicationModule
import com.example.daggerappkotlin.di.qualifier.ApplicationContext
import dagger.Component
import javax.inject.Singleton

@Singleton
@Component(modules = [ApplicationModule::class])
interface ApplicationComponent {

    fun inject(application: MyApplication)

    @ApplicationContext
    val context: Context

    val networkService: NetworkService

    val databaseService: DatabaseService



}

Я пытаюсьсоздать здание в MainActivity, HomeFragment и MyApplication ....

GithubRepo

MainActivity Issue

...