首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Dagger-2子组件作用域不起作用?

为什么Dagger-2子组件作用域不起作用?
EN

Stack Overflow用户
提问于 2016-02-09 04:32:15
回答 1查看 395关注 0票数 1

我尝试在Dagger 2中定义子组件的作用域,但在构建时得到以下错误

代码语言:javascript
复制
cannot be provided without an @Inject constructor or from an @Provides- or @Produces-annotated method.

如果我注释了作用域注释,构建就会成功。有人知道为什么吗?Dagger 2不是为这个场景而设计的吗?

ParentComponent.java

代码语言:javascript
复制
import com.cueyoueye.android.inject.annotation.ActivityScope;

import javax.inject.Inject;
import javax.inject.Singleton;

import dagger.Component;
import dagger.Module;
import dagger.Provides;
import dagger.Subcomponent;

@Singleton
@Component(modules = ParentComponent.ParentModule.class)
public interface ParentComponent {
    SubComponent subComponent();

//    @ActivityScope
    @Subcomponent(modules = SubComponentModule.class)
    interface SubComponent {
        void inject(Example activity);
    }

    @Module
    class SubComponentModule {
        @Provides
//        @ActivityScope
        B provideB() {
            return new B("Better");
        }
    }

    class B {
        public B(String s) {
        }
    }

    @Module
    class ParentModule {
        @Provides
        @Singleton
        Ab provideAb() {
            return new Ab("s");
        }
    }

    @Singleton
    class A {
        @Inject
        public A() {
        }
    }

    class Ab {
        public Ab(String s) {
        }
    }
}

Example.java

代码语言:javascript
复制
import javax.inject.Inject;

public class Example {
    @Inject
    ParentComponent.B b;

    public void injectSelf() {
        DaggerParentComponent.builder()
                .build()
                .subComponent()
                .inject(this);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2016-02-09 08:52:44

这段代码在完全隔离的情况下是有效的。导致构建错误的是其他原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35278751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档