小编Mat*_*ams的帖子

如果没有@Provides方法,则无法提供Dagger 2 Named

试图找到Dagger 2并且遇到命名提供者的问题.我有一个简单的设置如下:

// Module
@Module
class AppModule(private val app: App) {
    @Provides @AppScope fun providesApp() = app

    @Provides @AppScope fun provideSharedPreferences(app: App) = PreferenceManager.getDefaultSharedPreferences(app)

    @Provides @AppScope @Named("Uri1") fun providesUri1() = Uri.Builder().scheme("https").authority("authory1").build()

    @Provides @AppScope @Named("Uri2") fun providesUri2() = Uri.Builder().scheme("https").authority("authory2").build()
}

// Component
@AppScope
@Component(modules = arrayOf(AppModule::class))
interface AppComponent {
    fun inject(target: MainActivity)
}

// MainActivity
@Inject @AppScope lateinit var preferences: SharedPreferences
@Inject @AppScope @Named("Uri1") lateinit var uri1: Uri
@Inject @AppScope @Named("Uri2") lateinit var uri2: Uri
Run Code Online (Sandbox Code Playgroud)

在重建我的项目时,我得到了:

Error:Gradle: android.net.Uri cannot be provided …
Run Code Online (Sandbox Code Playgroud)

android dependency-injection kotlin dagger-2

9
推荐指数
1
解决办法
2346
查看次数

标签 统计

android ×1

dagger-2 ×1

dependency-injection ×1

kotlin ×1