为什么Dagger-2子组件范围不起作用?

为什么Dagger-2子组件范围不起作用?,dagger-2,Dagger 2,我试图在Dagger2中定义子组件,但在构建时出现以下错误 cannot be provided without an @Inject constructor or from an @Provides- or @Produces-annotated method. 如果我对范围注释进行注释,则生成成功。 有人知道为什么吗?匕首2不是针对这种情况设计的吗 ParentComponent.java import com.cueyoueye.android.inject.annotation.Act

我试图在Dagger2中定义子组件,但在构建时出现以下错误

cannot be provided without an @Inject constructor or from an @Provides- or @Produces-annotated method.
如果我对范围注释进行注释,则生成成功。 有人知道为什么吗?匕首2不是针对这种情况设计的吗

ParentComponent.java

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

import javax.inject.Inject;

public class Example {
    @Inject
    ParentComponent.B b;

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

这段代码是完全隔离的。其他原因导致生成错误。

此代码完全隔离运行。其他原因导致了生成错误。

我刚刚复制了该代码。它编译得很好。不管有没有关于范围的评论。谢谢运行它。你说得对,我将这段代码隔离到它自己的应用程序中,并构建它。我想我还需要进一步调试。我只是复制了那个代码。它编译得很好。不管有没有关于范围的评论。谢谢运行它。你说得对,我将这段代码隔离到它自己的应用程序中,并构建它。我想我还得进一步调试。