作为一个码农,什么都不用多讲,贴代码

build project

build module

Application

public class App extends Application {private AppComponent appComponent;@Override public void onCreate() {super.onCreate();appComponent= DaggerAppComponent.builder().appModule(new AppModule(this)).build();}public AppComponent getAppComponent() {return appComponent;}}

View Code

AppComponent

@Singleton
@Component(modules = { AppModule.class })
public interface AppComponent {@ContextLife("Application")App getApplication();RetrofitHelper retrofitHelper();  //提供http的帮助类

}

View Code

AppModule

@Module
public class AppModule {private App application;public AppModule(App application){this.application=application;}@Provides@Singleton@ContextLife("Application")public App provideApplication(){return application;}@Provides@Singletonpublic RetrofitHelper provideRetrofitHelper() {return new RetrofitHelper();}}

View Code

ActivityComponent

@ActivityScope
@Component(dependencies = AppComponent.class, modules = ActivityModule.class)//关联上下
public interface ActivityComponent {Activity getActivity();void inject(LoginActivity loginActivity);//要在类中使用注入功能void inject(MainActivity mainActivity);}

View Code

ActivityModule

@Module
public class ActivityModule {private Activity mActivity;public ActivityModule(Activity activity) {this.mActivity = activity;}@Provides@ActivityScopepublic Activity provideActivity() {return mActivity;}@Provides@ActivityScopepublic IPresenterFactory providePresenter(RetrofitHelper retrofitHelper) {return new PresenterFactory(retrofitHelper);}}

View Code

Base里面使用注入,否则无法注入

public abstract class PresenterActivity extends BaseActivity {private final static String TAG = "PresenterActivity";protected abstract void initInject();@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);initInject();}protected ActivityComponent getActivityComponent(){return  DaggerActivityComponent.builder().appComponent(App.getInstance().getAppComponent()).activityModule(getActivityModule()).build();}private ActivityModule getActivityModule() {return new ActivityModule(this);}}

View Code

此时前提条件都有了

点击运行自动生成注入代码(没问题的前提)

使用注入:

public class MainActivity extends PresenterActivity {@Injectprotected IPresenterFactory mPresenter;//没有创建对象,inject标签注入类型private final int BASIC_PERMISSION_REQUEST_CODE = 100;private TextView username;@Overridepublic void findView() {username = findView(R.id.username);username.setText(App.getInstance().getUserEntity().getName()+" hello");}@Overridepublic void init() {if (mPresenter != null){Toasts.showShort("mPresenter success",context);//注入成功会打印出success}}@Overridepublic int layoutResID() {return R.layout.activity_main;}@Overrideprotected void initInject() {getActivityComponent().inject(this);}@Subscribe(threadMode = ThreadMode.MAIN)public void onEvent() {Toasts.showShort("刷新UI",context);}}

转载于:https://www.cnblogs.com/LiuZhen/p/5923387.html

dagger2记录篇相关推荐

  1. [Django]模型学习记录篇--基础

    模型学习记录篇,仅仅自己学习时做的记录!!! 实现模型变更的三个步骤: 修改你的模型(在models.py文件中). 运行python manage.py makemigrations ,为这些修改创 ...

  2. Matlab——学习记录篇1番外篇——hold on与hold off的区别

    重点重点!!!!!!!本人使用的Matlab版本是R2021b,如果下面代码在别的版本运行之后有bug显示的话,需要自己到百度寻找相应的函数把错误的地方替换 继上一篇学习记录篇1,编程的时候一直对ho ...

  3. Learn Git Branching 学习笔记(移动提交记录篇)

    目录 一.移动提交记录篇 1.Git Cherry-pick 2.交互式rebase Git用法高级篇在上一篇文章中Learn Git Branching 学习笔记(高级篇)_流年--by gone的 ...

  4. 循环机换变速箱油教程_我的养车记录 篇一:途虎养车循环机更换变速箱油全记录...

    我的养车记录 篇一:途虎养车循环机更换变速箱油全记录 2018-10-17 15:00:00 59点赞 253收藏 305评论 小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励无 ...

  5. 前端radio单选框默认选中_开发记录篇前端内容1

    有段时间没有更新文章了,因为是用的公司电脑,没有虚拟机,所以就没法演示hadoop相关的东西了,而且大数据篇的东西需要花费一些时间和精力去收集整理内容,那大数据篇就先暂停一下.最近这段时间的话我可能会 ...

  6. github 码云 获取_开发记录篇使用VS2019管理github项目

    目前大家的工作和学习中git应该是必不可少的吧,现在好多公司都是在使用git来管理代码,比起以前的svn管理代码简洁清晰了很多,而且也减少了冲突的出现,最主要的git是分布式的,即使没有网络也一样可以 ...

  7. 小白学习记录篇01---C语言和C++的区别以及C语言中文件的含义(不足之处欢迎大佬补充提醒。)

    1.C语言和C++的对比 (1)创建文件的后缀名不同,如果创建C语言的文件通常以.c结尾,而C++通常以.cpp结尾. <1>这里就想要补充两个文件的概念,什么是.c文件?什么是.cpp文 ...

  8. QQ机器人{退出/回复设置/日志记录篇}

    之前聊过了QQ机器人{登录流程篇},那么今天来聊聊怎么退出,怎么设置回复选项以及日志记录. 退出:登录流程篇中说过,用户登录后就是一个线程在轮询收发消息,如果退出,当然是把这个线程干掉了~用户的线程对 ...

  9. 谈谈四天三夜的感受【记录篇】

    四天三夜 对于参与全国大学生电子设计竞赛来说,是一种对意志的挑战: 对于陪媳妇生小孩来说,是一种对家庭的责任. 竞赛篇 相信关注我的朋友中,有一部分人参与过全国大学生电子设计竞赛. 全国大学生电子设计 ...

最新文章

  1. Ipad写代码真香,包邮送一个!
  2. PHPCMS v9设置文章的审核功能
  3. LFS 8.3 中文翻译版本发布!
  4. 傅里叶变换音频可视化_Web Audio在音频可视化中的应用
  5. java中this.value_java中关键字this的用法
  6. mybatis 默认参数名#{0}、#{arg0}、#{param1},以及@Param
  7. 1.1.0-简介-P10-分布式事务的解决方案
  8. java地铁最短,地铁最短路径
  9. H264--1--编码原理以及I帧B帧P帧
  10. uni-app 打包App ,实现App更新提醒,并下载最新App
  11. Windows Server AppFabric 安装文档
  12. HTML将广告关闭的JS代码,js实现可关闭的对联对联广告代码广告效果代码
  13. C# 第五章『面向对象』◆第9节:抽象类和密封类
  14. 批量修改图幅lisp_【CAD应用技巧】批量自动修改图形文件的程序
  15. 你的微信号安全吗?(附最新技术分享)
  16. 做网站需要多少钱?做网站的费用是多少呢?
  17. 滤波电容为什么要靠近放置,去耦半径是什么?滤波电容如何打孔?(转)
  18. 记忆存储程序使得计算机能够实现,2016年职称计算机考试模块综合试题及答案(4)...
  19. 移动安全之Android安全检测工具大全
  20. Windows10合并非相邻磁盘或分区到系统C盘方法

热门文章

  1. loadrunner脚本设计:事务函数的使用
  2. openresty测试lua脚本配置示例
  3. Scala函数式编程:偏函数
  4. Scala函数作为参数传递示例
  5. docker中部署Tomcat
  6. 【Java算法】一天24小时中,时针和分针一共重合多少次?
  7. python双循环zip_Python 并行遍历zip()函数使用方法
  8. openhtmltopdf 图片_30w太阳能路灯价格及图片
  9. UDP(首部)和TCP(首部、三次握手、四次挥手、可靠传输、滑动窗口、流量控制、拥塞控制(慢开始、拥塞避免、快重传、快恢复))
  10. 算法练习day18——190409(Manacher)