crg*_*dos 7 android qualifiers kotlin dagger-2
我收到以下错误:
错误:(8,1)错误:如果没有@Inject构造函数或@ Provide-或@ Produces-annotated方法,则无法提供java.lang.String.
我试图制作一个提供两个合格字符串的模块.这是匕首的简化设置.
@Singleton
@Component(modules = [GreetingsModule::class])
interface AppComponent {
fun inject(activity: MainActivity)
}
@Qualifier annotation class Spanish
@Qualifier annotation class French
@Qualifier annotation class English
@Module
@Singleton
class GreetingsModule {
@Provides
@Spanish
fun providesHola(): String = "Hola mundo! - From Dagger"
@Provides
@English
fun providesHello(): String = "Hello world! - From Dagger"
}
Run Code Online (Sandbox Code Playgroud)
注入在MainActivity中完成:
class MainActivity : AppCompatActivity() {
@Inject @Spanish
lateinit var holaMundoText: String
@Inject @English
lateinit var helloWorldText: String
}
Run Code Online (Sandbox Code Playgroud)
我也尝试直接在组件中声明getter,但它失败并出现相同的错误.将模块方法声明为静态时也一样.
正如应该的那样,只有一个代码可以正常工作@Provide,然后在两个字段中注入字符串.我认为问题在于限定符.
任何帮助都非常感谢.
使用:
Oce*_*ife 19
JSR-330 + Kotlin(Dagger2就是这样的实现)有一些合格且命名注射的问题.从最近审查Github上Dagger2项目的积压工作开始,我知道Google团队正在寻求在即将发布的版本(无时间表)中提供更多主动帮助/更有用的错误消息.
您缺少的是@field:<Qualifier> 注释使用类型目标,如链接文档中所述.所以试试;
@Inject @field:Spanish lateinit var holaMundoText: String
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1538 次 |
| 最近记录: |