Dagger2的简单使用

添加依赖

Project的build.gradle文件中

dependencies {
 
   //添加这一行
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

}

Module的build.gradle文件中
android{
 
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

}

dependencies{
annotationProcessor 'com.google.dagger:dagger-compiler:2.4'//这一行需要添加
compile 'com.google.dagger:dagger:2.4'
provided 'org.glassfish:javax.annotation:10.0-b28'

}

添加代码 MainActivity类
public class MainActivity extends AppCompatActivity{

    //添加@Inject注解,表示这个mPoetry是需要注入的
    @Inject
    Poetry mPoetry;

    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();

    }

    private void initView() {
        tv = findViewById(R.id.tv);
        tv.setText(mPoetry.getmPemo());
    }
}

添加代码  MainComponent接口
 
用@Component表示这个接口是一个连接器,能用@Component注解的只
能是interface或者抽象类
@Component//不要忘记添加
public interface MainComponent {

    /**
     * 需要用到这个连接器的对象,就是这个对象里面有需要注入的属性
     * (被标记为@Inject的属性)
     * 这里inject表示注入的意思,这个方法名可以随意更改,但建议就
     * 用inject即可。
     */
    void inject(MainActivity activity);

}
运行一下,肯定会报错,但是不需要改任何东西,它生成了一些类
我们在MainActivity类中添加一些代码
public class MainActivity extends AppCompatActivity{

    //添加@Inject注解,表示这个mPoetry是需要注入的
    @Inject
    Poetry mPoetry;

    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //使用Dagger2生成的类 生成组件进行构造,并注入
        DaggerMainComponent.builder()
                .build()
                .inject(this);

        initView();
    }

    private void initView() {
        tv = findViewById(R.id.tv);
        tv.setText(mPoetry.getmPemo());
    }

}

再次运行,屏幕显示你想要显示的内容。







猜你喜欢

转载自blog.csdn.net/color_0716/article/details/78767137