我遵循此guide爲我的Android應用程序製作子組件。在這裏,我定義使用名爲LoginComponent
一個子組件,用於LoginActivity:匕首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。
感謝