首先,对于需要注入的内容添加@Inject。
例如,在MainActivity里面需要一个InterfaceA类型对象
MainActivity extends Activity{
@Inject
InterfaceA ia;
}
然后需要@Module类,该类里通过@Provides方法为@Inject进行注入
@Module
class ModuleA {
Aa = new A();//A实现了接口InterfaceA
@Provides
Interface AprovideInterfaceA(){
return a;
}
}
最后,@Component定义一个接口,在接口中提供注入点。
@Singleton
@Component(module = ModuleA.class)
public interface AComponent(){
void injectA(MainActivity act);
}
在MainActivity注入时调用injectA方法即可完成注入。
但是调用injectA方法的前提是你需要有一个AComponent对象,这个对象通过Daager2在编译时自动生成的一个DaggerAComponent来类来获得。所以,可以让MainActivity继承BaseActivity,在BaseActivity中完成AComponent接口的实例化。
BaseActivity extends Activity{
AComponentcomponent;
onCreate(Bundleb){
super.onCreate(b);
component = DaggerAComponent.builder.moduleA(new ModleA()).build();
}
public AComponent getComponent(){
return component;
}
}
MainActivity继承BaseActivity,通过getComponent方法获得AComponent对象:
MainActivity extends BaseActivity{
@Inject
InterfaceA ia;
onCreate(Bundleb){
super.onCreate(b);
setContentView(R.layout.main);
getComponent().inject(this);
}
}