待注入依赖为空

To-be-injected dependency is null

我正在尝试注入 Activity 的属性,但它只是被设置为 null,我无法找出原因。

@Inject
AuthenticationViewDispatcher mAuthenticationViewDispatcher;

--------

public class AuthenticationViewDispatcher {

    @Inject
    public AuthenticationViewDispatcher() {
    }

}

----

@Singleton
@Component(modules = ApplicationModule.class)
public interface ApplicationComponent extends AbstractComponent {

    Context context();
}

----

@Module
public class ApplicationModule {

private final Application mApplication;

public ApplicationModule(final @NonNull Application application) {
    this.mApplication = application;
}

@Provides
@Singleton
Context provideApplicationContext() {
    return this.mApplication;
}

----

@Singleton
@Component(modules = DataModule.class)
public interface DataComponent {
}

----

@PerActivity
@Component(dependencies = {ApplicationComponent.class}, modules = {LoginModule.class})
public interface LoginComponent extends ApplicationComponent {

    void inject(final InjectedActivity baseActivity);
}

----
@Module
public class LoginModule {

    @Provides
    @Singleton
    AuthenticationFlowDispatcher provideAuthenticationViewDispatcher(final @NonNull AuthenticationFlowDispatcher authenticationViewDispatcher) {
        return authenticationViewDispatcher;
    }
}

这不是我第一次使用这种设置,但我以前从未遇到过这个问题。我忘记了什么?

我认为您忘记了 void inject(That that) 仅适用于具体的 classes,而在基础 class 中您仅注入基础 class 中可见的内容。

如果你想注入具体的classes,你可以在基础

中指定一个抽象方法

protected abstract void injectSelf();

这样具体的 child 就可以调用组件的 inject 方法。