添加依赖
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()); } }
再次运行,屏幕显示你想要显示的内容。