2017-02-15 100 views
2

我在我的應用程序中使用了Dagger 2 DI框架。目前,我正在爲我的身份驗證活動創建目錄結構。匕首2將依賴注入片段?匕首堆棧?

我有一個AppComponent和AppModule,它們的作用域是ApplicationScope註釋。

對於具有@ActivityScope的個人活動。我有一個名爲AuthenticationActivity的活動,它唯一的工作就是呈現兩個片段 - LoginFragment和SignUpFragment,以便用戶可以滑動ViewPager以在兩者之間切換。現在,我的問題是我應該如何安排我的匕首堆棧?我是否需要創建爲LoginFragment子組件,例如像

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

而且我LoginComponent可能看起來類似的東西:

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

我的應用程序組件將類似於:

@Component(modules={AppModule.class}) 
public interface AppComponent{ 
    AuthenticationComponent plus(AuthenticationModule module); 
} 

我只是想知道是否有更優雅的方式(例如,避免創建AuthenticationComponent)提前謝謝!任何建議將不勝感激!

+1

您可以。你不需要。哎呀,如果你想要的話,你可以只有1個全局組件完成所有工作。問題是你認爲你通過擁有一個子組件可以得到什麼樣的價值?我在這裏看不到太多。 –

+0

@GabeSechan感謝您的評論。我不認爲我正在向AuthenticationActivity注入任何東西。這個活動的目的是通過使用viewpager來展示這兩個片段。所以我想我沒有獲得任何有價值的認證活動子組件。 –

+0

@GabeSechan我想我有這麼多嵌套的子組件混淆,我自動以爲我做錯了(第一次在一個大項目中使用Dagger 2) –

回答

1

我認爲兩個示波器(ApplicationScopeActivityScope)就足夠了。只需通過特定的活動組件注入片段即可。

+0

嗨!謝謝您的回答。不過,我並沒有問天氣,也沒有在活動中注入整個片段。我只是問我是否需要這個AuthenticationComponent,因爲堆棧的深度達到2級(有兩個子組件) –

+1

我不確定我是否理解你,但你絕對不需要兩個子組件。 – YMY

+0

我明白了。謝謝您的回答! :) –