Dagger之找不到component

最近在添加新功能的时候用到dagger,像往常一样,新建component,module,并在我的fragment中通过@Inject注入,一般来说,通过make project就能让dagger自动生成需要的类,但是我这出了问题,一编译就报错说找不到,找了好多天才发现,我不能在编译之前就用@Inject注入,而必须在编译完成Dagger自动生成了类以后才能使用。

 

2018/10/26

今天又遇到这个问题,在mvp架构中,同时使用了android architecture components,只要我一用@Inject就报错,我的所有Table都不见了,注释掉又好了,找半天,我发现问题出在Model的@Inject上,只要这里不写就没问题。于是 对比其他模块的model注入方式,发现我智障般地注入了model得接口,而不是实现类。

----警示

 

2018/12/12

WTF?这个Dagger2要把我搞死啊,每次都是报的相同错误,浪费好多好多时间。这回的问题是:我在Fragment中使用@Inject注入Presenter以后就会报错,让我误以为就是Presenter得问题,可是回去看Presenter一点错都没有,在构造方法上是加了@Inject得。搞了几个小时以后,我看了下报错,终于拉到最下面,看到不是Presenter得问题,而是在Presenter中注入了Model,而在Model中注入了一个Service,而这个service没有在我得Component中使用@Provides提供,所以导致得连锁反应。这件事情告诉我,在拷贝一些相同模块得时候,不要轻易就删除一些@Inject依赖。还有一点,最好是从头自己写。

 

2019/3/8

脑壳疼,这个dagger啊!!稍微出点错就错一大堆,然后报错提示还不告诉你原因 ,搞得不想用了。。。比对之前的代码找了半天,原来我不小心把AModule里面提供的AService依赖改成了BService,结果依赖service的model类中还不报错,主要是改了类名没改对象名,然后导致一大堆东西找不到,服了自己了。。。

下面贴图长记性:

原图是这样,module里面 提供TaskService依赖,然后呢 我在model里面注入TaskService,这是最开始的对的:

后来弱智般的改了一下,改成了这样,就出错了:

module中提供的已经是另外一个service了,而我还在用原来的taskService,所以导致找不到。

 

唉,求自己以后别瞎搞啊。。

展开阅读全文

没有更多推荐了,返回首页