如果构造中有参数的情况将如何做呢,此时我们就需要Moduel为我们提供参数了
1.创建有参构造的DaggerBean
![](https://i-blog.csdnimg.cn/blog_migrate/c6b568160449d1376ddab7067e1d65fd.jpeg)
2.MainModuel中使用构造方法将参数传入
![](https://i-blog.csdnimg.cn/blog_migrate/ffac00a12e1775ec3a44ab0d4562dc9b.jpeg)
3.MainActivity中使用多了一个mainModule(new MainModule("name"))
DaggerMainComponent.builder().mainModule(new MainModule("name")).build().inject(this);
![](https://i-blog.csdnimg.cn/blog_migrate/97c738726d7701c2131e126f99c1fdd8.jpeg)
/
上面是通过构造传入
同时也可以用Provider直接提供,通过构造直接注入
![](https://i-blog.csdnimg.cn/blog_migrate/3256594d6f6d5ad1bbe23c3bb132cfa9.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/1abf701e5a3a0b01ed5e342a9e3b1ef9.jpeg)
MainActivity使用DaggerMainComponent.builder().build().inject(this);
但是如果是这种情况,构造方法中有俩个相同类型的参数,如果使用@Providers就会报错
![](https://i-blog.csdnimg.cn/blog_migrate/9705a35f7231c25eafeb1fe5e69fa973.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/292a185f11eed99e2947f361fb653ce2.jpeg)
此时,需要使用到宁外一个注解@Qualifier,他是Dagger2提供给我们的用于区分相同类型的参数注入的,使用方式
![](https://i-blog.csdnimg.cn/blog_migrate/7ad6556a3820a02bd57967c6ddbabc2f.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/4ac4b0d473900b3cdfe162081d404e1c.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/be5c234dc4fa9a1135efac8192265c38.jpeg)
此时就可以使用了