今天看了些Dagger2 的知识,下面将例子记录下:
1.依赖项配置
dependencies {
implementation 'com.google.dagger:dagger:2.11'
annotationProcessor 'com.google.dagger:dagger-compiler:2.11'
}
2.创建一个学生类
public class Student {
private int num;
private String name;
@Inject
public Student() {
this.num = 1;
this.name = "xiaozhao";
}
}
代码中 @Inject 就是添加注解的意思
3.创建模块
@Module
public class MainModule {
private MainActivity mainActivity;
public MainModule(MainActivity mainActivity){
this.mainActivity = mainActivity;
}
}
4.创建组件
@Component(modules = MainModule.class)
public interface MainComponent {
void inject(MainActivity mainActivity);
}
其中 Module和Component 是针对 Activity的,一般前缀跟Activity同名
5.在Activity中添加内容
public class MainActivity extends AppCompatActivity {
@Inject
Student student;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*下面两行代码哪个都可以*/
// DaggerMainComponent.builder().build().inject(this);
DaggerMainComponent.builder().mainModule(new MainModule(this)).build().inject(this);
Log.e("test", "student:" + student.toString());
}
}
DaggerMainComponent 是有 MainComponent 前面添加了Dagger(为什么这样写可以查其他文献),如果AS中报错,可以这样写后编译一下即可!
如果不创建模块和组件,则会报空指针错误,参考地址如下:
https://blog.csdn.net/mq2553299/article/details/73065745
.