大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
参考
Android_Dagger2篇——从小白最易上手的角度 + 最新dagger.android
都是套路——Dagger2没有想象的那么难
一、无module方式,无参构造
(最简单,但是不常用)
1. 在需要实例化的类中,构造无参构造方法,注解@Inject
必须是无参构造方法
@Inject
public Student() {
}
2. 构造Component接口,有inject方法
@Component
public interface DaggerComponent {
void inject(MainActivity activity); //要注入的类
}
3. Make Project (Ctrl+F9)
4. 在需要注入的类中调用
@Inject Student mStudent;
DaggerStudentComponent.create().inject(this); //该方法执行成功即可以调用对象
二、有module方式
1. 在需要实例化的类中,构造方法注解@Inject
可以带有参数
@Inject
public Student(String name, int age) {
this.name = name;
this.age = age;
}
2. 构造Module类
- 注解
@Module
- 构造一个返回类型为需要注入对象的方法,注解
@Provides
@Module
public class StudentModule {
@Provides
Student provideStudent() {
return new Student("张三", 18);
}
}
3. 构造Component接口,有inject方法
@Component(modules = StudentModule.class) //与上面唯一的区别在此
public interface StudentComponent {
void inject(MainActivity activity);
}
4. 在需要注入的类中调用
使用builder方式而不是create注入
@Inject Student mStudent;
DaggerStudentComponent.builder().studentModule(new StudentModule()).build().inject(this);
注意
@Inject
只能注解一个构造方法@Module
级别高于@Inject
@Component
可以标注接口
,也可以标注抽象类
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/198872.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...