为了介绍Dagger2的使用,我们搭建了一个Demo来逐步分析,大家可以在这里
下载源码(https://github.com/dushaofeng/DaggerDemo.git)。
前面一节 《Dagger2教程二之基础使用篇》介绍了Dagger2最简单的使用场景,但是在结尾我们遇到两个困难,即如何在不修改注入类代码的情况下实现注入?如何解决注入类构造方法需要参数的情况?
比如我们有一个BeanNeedParam的对象,其 构造方法中需要传递一个String类型的变量用来初始化mName:
前面一节 《Dagger2教程二之基础使用篇》介绍了Dagger2最简单的使用场景,但是在结尾我们遇到两个困难,即如何在不修改注入类代码的情况下实现注入?如何解决注入类构造方法需要参数的情况?
比如我们有一个BeanNeedParam的对象,其 构造方法中需要传递一个String类型的变量用来初始化mName:
public class BeanNeedParam {
private String mName = null;
public BeanNeedParam(String name) {
this.mName = name;
}
public String getName() {
return mName;
}
}
接下来我们介绍如何在不修改这个类的前提下,如何将其注入到Activity中。
一、有参数的注入类使用方式
为了解决有参数的问题,我们需要对之前的结构进行两点改造,下面分别来进行。
1.1、改造Component
首先我们来改造Component,我们依然使用上一篇中的demo,来将BeanComponent.java改造成如下方式: @Component(modules = BeanModule.class)
public interface BeanComponent {