我正在尝试用Dagger2设置一个新项目,之前我使用过Dagger2,但现在我正试图自己设置它.我从Kotlin项目中得到了一个例子,但我不能像现在在Kotlin中那样设置Java(或者我可能缺少一些东西).
它只是一个组件,单个模块和应用程序.
零件
@Singleton
@Component(modules = {MainAppModule.class})
public interface AppComponent extends AndroidInjector<App> {
@Component.Builder
abstract class Builder implements AndroidInjector.Factory<App> {
public AppComponent create(App application) {
seedApplication(application);
return build();
}
@BindsInstance
abstract void seedApplication(App application);
abstract AppComponent build();
}
}
Run Code Online (Sandbox Code Playgroud)
模
@Module
abstract class MainAppModule {
@Binds
abstract public Application bindApplication(App application);
@ContributesAndroidInjector
abstract public MainActivity contributeActivityInjector();
}
Run Code Online (Sandbox Code Playgroud)
*申请*
public class App extends DaggerApplication {
@Override
public AndroidInjector<? extends DaggerApplication> applicationInjector() {
return DaggerAppComponent.builder().create(this);
}
}
Run Code Online (Sandbox Code Playgroud)
在这一点上,我没有任何我调用的类,我@Inject
只是在构建时遇到错误:
error: [dagger.android.AndroidInjector.inject(T)] …Run Code Online (Sandbox Code Playgroud)