我想将我的活动课程注入另一个第三方课程,如下所示,
public class LoginPresenter implements ILoginPresenter {
@Inject
LoginActivity view;
public void attemptLogin(String username, String password) {
if (view.getUserName().isEmpty()) {
//"view" here is always null, I dont know how to correctly inject it.
view.showUserNameEmptyError(R.string.USER_NAME_EMPTY_ERROR);
return;
}
}
这是我的appModule类,它为我提供了一个很大的背景,
@Module
public class AppModule {
static Application mApplication;
public AppModule(Application application) {
mApplication = application;
}
@Provides
@Singleton
Application providesApplication() {
return mApplication;
}
}
我可以将上述上下文转换为其中一个活动,转换为我的类的构造函数,如果是,那么如何?或者我应该为它定义另一个提供者?
这是我的组件
@Singleton
@Component(modules = {AppModule.class, NetModule.class})
public interface NetComponent {
void inject(LoginPresenter presenter);
void inject(ILoginPresenter presenter);
}
更新: 我将它的构造函数和提供程序添加到我的Appmodule
public AppModule(Application application, LoginActivity loginActivity) {
this.application = application;
this.loginActivity = loginActivity;
}
但我不知道如何传递参数来构建组件
答案 0 :(得分:0)
您需要添加其他提供商方法。
@Module
public class AppModule {
private final Application application;
private final LoginActivity loginActivity;
public AppModule(Application application, LoginActivity loginActivity) {
this.application = application;
this.loginActivity = loginActivity;
}
@Provides
@Singleton
Application providesApplication() {
return mApplication;
}
@Provides
@Singleton
LoginActivity provideLoginActivity() {
return loginActivity;
}
}