kotlin [Dagger/MissingBinding] x

2018-12-07  本文已影响0人  Chungo

在项目转kotlin的时候,使用dagger2遇到了上述问题。排查了一周,才把所有问题解决。在此做一个踩坑实践的记录。

1,如果dagger2使用正确的话,还是出现了上诉错误。那么很有可能是kotlin和dagger2混合使用,注解编译器还不是很完善,明明java代码可以编译通过,转过来之后dagger2怎么也编译不通过。

可供参考的问题一:
错误: [Dagger/MissingBinding] xxxx cannot be provided without an @Inject constructor or an @Provides-annotated method.
请检查一下 @Binds 和 @Provides 是否混合使用
如图


image.png

解决办法,把 abstract 的module 抽取出来作为抽象类单独使用

问题二:
@Qualifier 引起编译不通过


image.png

如上,如果两个返回的是相同的接口。必须要有一个不能用@Qualifier限定。。
解决方法:


image.png

如图,必须要有一个方法没有被qualifier修饰。或者把返回的接口替换成具体实现的类


image.png

注意:这里修改了之后,@Inject的地方也要做相应的改动

以上,感恩新技术

上一篇 下一篇

猜你喜欢

热点阅读