Проблема с инъекцией Dagger2 в основном действии при использовании модифицированного андроида

112
9

Я сталкиваюсь с проблемой, когда вы вводите объект службы переоснащения с помощью кинжала2. Вот подробности моего сценария:

Дооснащение класса WebService:

public interface WebService {                                                               
Observable<Name> searchName(@Query("id") String id);
}

Вот класс SubModule:

@Module
public class SetupModule {

@Provides
MainActivity provideWebService(WebService webService) {
return new MainActivity(webService);
}
}

Вот класс SubComponent:

@SetupScope
@Subcomponent(modules = SubModule.class)
public interface SubComponent {
MainActivity inject(MainActivity mainActivity);
}

Вот класс AppComponent:

@Singleton
@Component(modules = {
AppModule.class,
NetworkModule.class})
public interface AppComponent
{
SubComponent plus(SubModule subModule);
}

Вот создание компонента в BaseApplication Class:

 public SubComponent createSubComponent()
{
subComponent = appComponent.plus(new subModule());
return subComponent;
}

Вот класс MainActivity:

 public MainActivity(WebService webService) {
this.webService = webService;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
((BaseApplication) getApplication()).createSubComponent().inject(this);
}

При попытке доступа к методу searchName в интерфейсе WebService из MainActivity я получаю сообщение об webservice nullpointerexception netpinterex.

Пожалуйста, помогите мне узнать, почему объект webservice получает нуль?

спросил(а) 2021-01-19T18:48:09+03:00 9 месяцев, 1 неделя назад
1
Решение
65

Я думаю, сначала вы должны удалить WebService из конструктора действий и запустить службу примерно так:

@Inject
WebService webService;

ответил(а) 2021-01-19T18:48:09+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема