Я использую MVP в android. Я использую кинжал и по какой-то неизвестной причине, или из-за недостатка знаний, не вводят в другой класс.Нужно делать вложенные инъекции кинжалом
У меня есть этот модуль:
@Module(
injects = {
LoginActivity.class,
},
library = true,
complete = false
)
public class LoginModule {
private LoginActivity loginActivity;
public LoginModule(LoginActivity loginActivity) {
this.loginActivity = loginActivity;
}
@Provides
@Singleton
LoginPresenter provideLoginPresenter() {
return new LoginPresenterImpl(loginActivity);
}
@Provides @Singleton
public UrlService provideUrlService(){
return new UrlServiceImpl();
}
}
Эта активность:
public class LoginActivity extends BaseActivity implements LoginView {
@Inject
public LoginPresenter loginPresenter;
@Inject
UrlService urlService;
//...
@Override
protected List<Object> getModules() {
List<Object> modules = new LinkedList<Object>();
modules.add(new LoginModule(this));
return modules;
}
//...
//I use butterknife too
@Optional
@OnClick(R.id.btn_login_accept)
public void testButtonOnClick() {
disableAccept();
writeLog(urlService.getLoginUrl()); //This UrlService works fine.
loginPresenter.login(); //And login presenter works too.
}
и этот код инъекции LoginPresenter где UrlService она возвращает NullPointerException
public class LoginPresenterImpl extends BasePresenterImpl<LoginView>
implements LoginPresenter {
@Inject
public LoginPresenterImpl(LoginView view) {
super(view);
}
@Inject
public UrlService urlService;
@Override
public void login() {
view.showShortMessage(urlService.getLoginUrl());//throws nullpointerexception
Пожалуйста, кто-то может мне помочь?
заранее спасибо
Вы не указали свой метод 'onCreate()', я предполагаю, что вы вызываете 'inject (this)' как часть этого, хотя? –