2016-06-11 10 views
0

アクティビティの属性を挿入しようとしていますが、nullに設定されていますが、その理由がわかりません。注入される依存関係が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; 
    } 
} 

私がこの種の設定を使用するのは初めてですが、これまでにこの問題が発生したことはありません。私は何を忘れていますか?

+1

その 'void inject(That that)'は具体的なクラスでのみ動作し、ベースクラスでは、基本クラスで見えるものだけを注入します。 – EpicPandaForce

+0

私はいつもダガーは私がそれも好きなやり方で継承で動作しないことを忘れています。再度、感謝します。私はそれを受け入れることができるように答えにあなたのコメントを移動すること自由に感じる:) –

答えて

1

私は、void inject(That that)が具体的なクラスでのみ機能し、基本クラスでは、基本クラスに表示されているものだけを注入することを忘れていると思います。

あなたは具象クラスを注入する場合は、例えば、具体的な子供がそれ自体の上、コンポーネントのinjectメソッドを呼び出すことができるようになります方法ベース

protected abstract void injectSelf();

で抽象メソッドを指定することができます。

関連する問題