Спасибо за чтение. После некоторых проблем с аннотациями после преобразования 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