java – Dagger Component具有冲突的范围
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – Dagger Component具有冲突的范围,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2349字,纯文字阅读大概需要4分钟。
内容图文
![java – Dagger Component具有冲突的范围](/upload/InfoBanner/zyjiaocheng/820/2983faad3bfb44ca9b8e145cf5da627c.jpg)
我正在使用Dagger,我有一个带有@Singleton范围的app组件,还有一个带有@Singleton范围的子组件.现在,当我编译它时,我收到此错误:
[io.droid.nowtellapp.dagger.SignInMvpComponet]
io.droid.nowtellapp.dagger.SignInMvpComponet has conflicting scopes:
io.droid.nowtellapp.dagger.ApplicationComponent also has @Singleton
要解决此错误,我从子组件中删除了@Singleton并编译了它,这次出现此错误:
Error:(12, 1) error: io.droid.nowtellapp.dagger.SignInMvpComponet
(unscoped) may not reference scoped bindings: @Singleton @Provides
io.droid.nowtellapp.mvp.SignInMvp.Presenter
io.droid.nowtellapp.dagger.SignInMvpModule.presenter(io.droid.nowtellapp.webservices.NowTellApi)
也出现此错误:
Error:(21, 8) error: [ComponentProcessor:MiscError] dagger.internal.codegen.ComponentProcessor was unable to process this class because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code.
这是我的ApplicationComponent
@Singleton
@Component(modules = {AppModule.class, RetroApiModule.class})
public interface ApplicationComponent {
void inject(MainActivity mainActivity);
SignInMvpComponet signInMvpComponet(SignInMvpModule signInMvpModule);
}
这是我的SignInMvpComponet
@Subcomponent(modules = {SignInMvpModule.class})
public interface SignInMvpComponet {
void inject(SignInFragment signInFragment);
这是SignInMvpModule类
@Module
public class SignInMvpModule {
private final SignInMvp.View view;
public SignInMvpModule(SignInMvp.View view) {
this.view = view;
}
@Singleton
@Provides
SignInMvp.Presenter presenter(NowTellApi api) {
return new SignInPresenter(view,api);
}
}
如何解决这个问题?提前致谢.
解决方法:
I have an app component with @Singleton scope and also a subcomponent with @Singleton scope.
不,你没有.子组件的范围不能与其父组件相同.你可以阅读in the documentation:
No subcomponent may be associated with the same scope as any ancestor component, although two subcomponents that are not mutually reachable can be associated with the same scope because there is no ambiguity about where to store the scoped objects.
您的第一个错误是因为父组件和子组件共享相同的范围,您的第二个错误是因为子组件需要范围.两个错误的解决方案是为子组件提供与父组件不同的范围,或者根本不使用子组件(如果它们都应该是@Singleton,为什么需要2?)
通常我们倾向于为我们的子组件创建@PerActivity或@ActivityScoped等范围,它们共享 – 如名称所示 – 活动的生命周期并在其中使用.
内容总结
以上是互联网集市为您收集整理的java – Dagger Component具有冲突的范围全部内容,希望文章能够帮你解决java – Dagger Component具有冲突的范围所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。