2016-09-26 6 views
0
나는 다음과 같은 제 3자가 클래스로 내 활동 클래스를 주입 할

,로드 된 모든 작업을 주입하는 방법은 무엇입니까?

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); 
} 

UPDATE입니다 : 내가

public AppModule(Application application, LoginActivity loginActivity) { 
    this.application = application; 
    this.loginActivity = loginActivity; 
} 

하지만 난 모르겠 어떻게 전달 내 Appmodule, 그것은이 생성자와 제공자를 추가 구성 요소를 구성하는 매개 변수

답변

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 (새로운 AppModule (this,/* 여기서해야 할 일? * /)) –

+0

LoginActivity에서 AppModule을 빌드하고 두 번째 매개 변수에 "this"를 추가해야합니다. – ootinii

+0

고맙습니다.하지만 첫 번째 매개 변수에 대해 어떻게해야합니까? 내 질문이 –

관련 문제