2017-02-15 21 views
2

私のアプリでDagger 2 DIフレームワークを使用しています。現在、認証アクティビティのディレクトリ構造を作成しています。ダガー2は、依存関係をフラグメントに注入しますか?ダガースタック?

私はAppComponentとAppModuleをApplicationScopeアノテーションでスコープしています。

個々の活動については、@ActivityScopeを持っています。 AuthenticationActivityと呼ばれるアクティビティが1つあり、その唯一の仕事は2つのFragments - LoginFragmentとSignUpFragmentを提示して、ユーザーがビューページをスワイプして2つの間で変更できるようにすることです。さて、私の質問は、私はどのように私のダガースタックを配置する必要がありますか?

@Subcomponent(modules{LoginModule.class}) 
public interface LoginComponent{ 
    void inject(LoginFragment fragment); 
} 

マイアプリのコンポーネントは似ています:

@Component(modules={AppModule.class}) 
public interface AppComponent{ 
    AuthenticationComponent plus(AuthenticationModule module); 
} 
私はそのような何かを見ることができるよう

@Subcomponent(modules{}) 
public interface AuthenticationComponent{ 
    LoginComponent plus(LoginModule module); 
} 

そして、私のLoginComponentのような例えば、LoginFragmentのためのサブコンポーネントを作成する必要がありますか

より洗練された方法があるかどうか疑問に思っています(たとえば、AuthenticationComponentの作成を避けるなど)。どんなアドバイスも高く評価されます!

+1

できます。あなたはする必要はありません。あなたが望むのであれば、すべてを行うグローバルコンポーネントを1つだけ持つことができます。問題は、サブコンポーネントを持つことによってどのような価値が得られると思いますか?私はここにあまり見ない。 –

+0

@GabeSechanご意見ありがとうございました。私はAuthenticationActivityに何かを注入しているとは思わない。このアクティビティの目的は、ビューページを使用して2つのフラグメントを表示することです。ですから、私はauthenticationActivityサブコンポーネントを持っていても価値がないと思います。 –

+0

@GabeSechan私は、多くのネストされたサブコンポーネントを持つことを混乱させていると思います。私はそれが間違っていると自動的に思っていました(大きなプロジェクトでDagger 2を初めて使う) –

答えて

1

私は2つのスコープ(ApplicationScopeActivityScope)で十分だと思います。特定のアクティビティコンポーネントを介してフラグメントを注入するだけです。

+0

こんにちは!あなたの答えをありがとう。しかし、私は気象を尋ねるのではなく、全体の断片をアクティビティに注入しないようにしていました。私はちょうどスタックが2つのレベルを深く(2つのサブコンポーネントで)取得しているので、このAuthenticationComponentをすべて必要としているのですか? –

+1

私はあなたをよく理解していますが、間違いなく2つのサブコンポーネントは必要ありません。 – YMY

+0

私は参照してください。あなたの答えをありがとう! :) –

関連する問題