私のAndroidアプリケーション用のサブコンポーネントを作成するには、このguideに従います。ここで私はLoginActivityに使用LoginComponent
という名前の一つのサブコンポーネントを定義した:ダガー2:注入副成分を定義する
@Subcomponent(modules = LoginModule.class)
public interface LoginComponent {
void inject(LoginActivity activity);
@Subcomponent.Builder
interface Builder {
Builder requestModule(LoginModule module);
LoginComponent build();
}
}
@Module
public class LoginModule {
@Provides
LoginManager provideLoginManager(LoginManagerImpl manager) {
return manager;
}
@Provides
LoginView provideLoginView(LoginViewImpl view) {
return view;
}
@Provides
LoginPresenter loginPresenter(LoginView view, LoginManager manager) {
return new LoginPresenterImpl(view, manager);
}
}
私は別のコンポーネント内のこのサブコンポーネントを定義します。ここでは
@Module(subcomponents = LoginComponent.class)
public interface AppModule {
}
@Singleton
@Component(modules = {
AppModule.class
})
public interface AppComponent {
}
は私LoginActivityです:
public class LoginActivity extends AppCompatActivity {
@Inject LoginPresenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
}
}
私の質問は:
- 目的は
@Subcomponent.Builder
です。このコンポーネントのすべてのモジュールが@Subcomponent
注釈で定義されているため、この点はわかりません。なぜ我々は再び複製する必要があります。 - 上記のアクティビティにどのようにLoginPresenterを注入できますか?
おかげ