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

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;
} }
AppComponent
@Singleton
@Component(modules = { AppModule.class })
public interface AppComponent { @ContextLife("Application")
App getApplication(); RetrofitHelper retrofitHelper(); //提供http的帮助类 }
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
@Singleton
public RetrofitHelper provideRetrofitHelper() {
return new RetrofitHelper();
} }
ActivityComponent
@ActivityScope
@Component(dependencies = AppComponent.class, modules = ActivityModule.class)//关联上下
public interface ActivityComponent { Activity getActivity(); void inject(LoginActivity loginActivity);//要在类中使用注入功能
void inject(MainActivity mainActivity); }
ActivityModule
@Module
public class ActivityModule { private Activity mActivity; public ActivityModule(Activity activity) {
this.mActivity = activity;
} @Provides
@ActivityScope
public Activity provideActivity() {
return mActivity;
} @Provides
@ActivityScope
public IPresenterFactory providePresenter(RetrofitHelper retrofitHelper) {
return new PresenterFactory(retrofitHelper);
} }

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

public abstract class PresenterActivity extends BaseActivity {

    private final static String TAG = "PresenterActivity";

    protected abstract void initInject();

    @Override
protected 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);
} }

此时前提条件都有了

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

使用注入:

public class MainActivity extends PresenterActivity {

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

dagger2记录篇的更多相关文章

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

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

  2. Retrofit+MVP框架封装记录篇

    当下最流行的网络请求组合,retrofit2+okhttp+rxjava+mvp 这里是封装记录篇 首先分模块,比如登录 先来说封装后的使用 package com.fragmentapp.login ...

  3. git+coding.net记录篇

    很久没用了,有些配置快忘记了,记录下来,以供以后参考回忆 首先下载好git插件,然后在as上面设置好本地项目地址 设置好git,点击test测试通过 然后把项目添加到git本地库 你会看到你项目里的文 ...

  4. GRPC在NET上的实践(记录篇)

    GRPC是什么? GRPC是一个开源RPC框架,于2015年3月开源,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于Protobuf 3.0(Protocol Buffer ...

  5. 2、Flutter 填坑记录篇

    1.前言 之前写了一篇文章关于 flutter 初体验的一篇,https://www.cnblogs.com/niceyoo/p/9240359.html,当时一顿骚操作,然后程序就跑起来了. 隔了好 ...

  6. 被 idea 坑了的记录篇

    这个星期真的是波折的一周~~~~ 不得不吐槽下无敌坑的自己了,社会我娜姐,坑起来连自己都坑~~ 其实这也不全算我自己的坑,我只是卸载了idea,重新装了一下而已,很神奇的把idea的几个坑全撞了一遍( ...

  7. IDEA快速搭建WEB项目【记录篇】

    这里用的都是市面上通用的技术,而每个公司都有自己的调用方式,可以根据实际情况与业务场景不同去进行变通 三层架构: 界面层(User Interface layer).业务逻辑层(Business Lo ...

  8. js实现图片旋转、模板文件查看图片大图之记录篇[二]

    一个小小的前端需求送给大家,使用js实现图片旋转,并且点击图片能够实现规定格式的大图. 主要使用的是jQuery的delegate()方法实现图片旋转,该方法主要的功能就是给某个组件绑定一个或一组事件 ...

  9. 4、Flutter 采坑记录篇二_依赖库不兼容

    1.报错信息 Because every version of flutter_test from sdk depends on package_resolver 1.0.4 which depend ...

随机推荐

  1. 第12章 Linux系统管理

    1. 进程管理 1.1 进程查看 (1)进程简介 进程是正在执行的一个程序或命令(如ls命令也是一个进程),每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源. (2)进程管理的作用 ...

  2. [Intel Edison开发板] 01、Edison开发板性能简述

    Integrated Wi-Fi certified in 68 countries, Bluetooth® 4.0 support, 1GB DDR and 4GB flash memory sim ...

  3. 使用xUnit,EF,Effort和ABP进行单元测试(C#)

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 介绍 创建测试项目 准备测试基类 创建第一个测试 测试异常 在测试中使用仓储 测试异步方法 小结 介绍 在这篇博客中,我 ...

  4. IT公司的女流之辈

    声明:并不是对女性怎么怎么滴歧视, 我只是想陈述事实. 女性来IT公司工作, 真的适合吗? 如果是杰出女性也就罢了, 如果只是一般女性呢? 她能够像一般男性一样的 努力工作, 像牛马一样的工作? 在某 ...

  5. Enterprise Solution 开源项目资源汇总 Visual Studio Online 源代码托管 企业管理软件开发框架

    Enterprise Solution 是一套管理软件开发框架,在这个框架基础上开发出一套企业资源计划系统Enterprise Edition. 现将Enterprise Solution开发过程中遇 ...

  6. Kafka 文档用例

    1.2 用例 以下是一些Kafka 常见的用例.关于功能方面的一些概念,可以看这篇博客:http://engineering.linkedin.com/distributed-systems/log- ...

  7. ASP.NET MVC5+EF6+EasyUI 后台管理系统(52)-美化EasyUI皮肤和图标

    系列目录 我很久以前就想更新系统的皮肤功能,Easyui 自带的皮肤已经无法满足客户的审美. 皮肤颜色来源于AdminLTE系统.我的颜色全部都这里取的.,所以一共取了11个颜色.1个皮肤=2个ban ...

  8. Geotrellis系列文章链接

    本文存放了我在博客园中撰写的Geotrellis系列文章链接,方便查阅! 一.geotrellis使用初探 二.geotrellis使用(二)geotrellis-chatta-demo以及geotr ...

  9. 详细分析Android viewpager 无限循环滚动图片

    由于最近在忙于项目,就没时间更新博客了,于是趁着周日在房间把最近的在项目中遇到的技术总结下.最近在项目中要做一个在viewpager无限滚动图片的需求,其实百度一下有好多的例子,但是大部分虽然实现了, ...

  10. 代码的坏味道(5)——数据泥团(Data Clumps)

    坏味道--数据泥团(Data Clumps) 特征 有时,代码的不同部分包含相同的变量组(例如用于连接到数据库的参数).这些绑在一起出现的数据应该拥有自己的对象. 问题原因 通常,数据泥团的出现时因为 ...