添加dagger2的依赖(Android gradle插件版本基于2.3以上,2.2已经之前版本要麻烦些 https://bitbucket.org/hvisser/android-apt)
dependencies {
compile 'com.google.dagger:dagger:2.16'
annotationProcessor 'com.google.dagger:dagger-compiler:2.16'
}
使用Dagger2让P层与V层解耦,也就是为了搞定这行代码 (v层--activity要用到p层方法就需要持有p层的引用)
private MainActivityPresenter mPresenter = new MainActivityPresenter(this);
第一步:用Inject标记需要注入的属性(上面代码的等号左边):
@Inject
MainActivityPresenter mPresenter;
第二步:指定用来创建对象的类和方法(等号右边)@Module:指定创建对象的类 @Provides:指定创建对象的方法、
@Moudule标记在类上,用来告诉Componet,可以从这个类中获取到依赖的对象
@provides标记在方法上,用来告诉Componet,可以从这个方法中获取到依赖对象的实力
@Module
public class MainActivityModule {
MainActivity mMainActivity;
public MainActivityModule(MainActivity mainActivity) {
mMainActivity = mainActivity;
}
@Provides
MainActivityPresenter providersMainActivityPresenter(){
return new MainActivityPresenter(mMainActivity);
}
}
第三步:将接收者和创建好的对象关联起来(等号 )
@Component(modules = MainActivityModule.class)
public interface MainActivityComponet {
void in(MainActivity mainActivity);
}
第四步:点击Build -- ReBuild Project
第五步:在MainActivity中注入Presenter
DaggerMainActivityComponet.builder().mainActivityModule(new MainActivityModule(this)).build().in(this);
结束!
现在我可以在MainActivity中随意调用p层的方法了 比如:mPresenter.login();