2016-09-26 105 views
0

我要注入我的活动类到另一个第三方类像下面,如何在加载每一件东西时注入活动?

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

您将需要添加另一个提供程序方法。

@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; 
    } 
} 
+0

但我怎么会通过上下文? DaggerNetComponent.builder() .appModule(new AppModule(this,/ *我应该在这里做什么?* /)) –

+0

您将不得不在LoginActivity中构建您的AppModule,并为第二个参数添加“this”。 – ootinii

+0

谢谢,但我会怎么做第一个参数呢,我更新了我的问题 –

相关问题