Я использую Кинжал-2 (версия: 2.7) и Автозаводская (версия: 1.0-бета3). Я столкнулся с особой проблемой.Вопросы, реализующие Ассоциированные инъекции при использовании Dagger-2 и Автозаводской
У меня есть аа класс MyRequest кто к т е р принимает 2 параметра, как:
- ConnectivityManager conmgr
- INT SomeValue
Я создал CTOR, как
@Autofactory
public MyRequest(@Provider ConnectivityManager conmgr, int somevalue){
//
}
У меня есть модуль, содержащий следующие данные:
@Provides
@SystemScope
public final ConnectivityManager provideConnectivityManager(App app) {
return (ConnectivityManager)
app.getSystemService(Context.CONNECTIVITY_SERVICE);
}
В том же модуле, я следующий
@Provides
@SystemScope
public final MyRequestFactory providesMyRequestFactory(ConnectivityManager connectivityManager {
return new MyRequestFactory(connectivityManager);
}
Я получаю ошибку сборки несовместимых типов: ConnectivityManager не может быть преобразован в Provider < ConnectivityManager>.
Любая идея, как решить эту проблему?
Спасибо за хорошее объяснение. И по уважительным причинам, почему мне не нужно «@Provides» для «MyRequest». Однако вы могли бы дать представление о том, как Dagger-2 будет внедрять Provider, хотя я предоставляю только ConnectivityManger, используя «@Provides ConnectivityManager» в моем модуле (а не в Провайдере –
shyguy
@shyguy. Добро пожаловать!И вам, вероятно, понадобится @Provides для MyRequest, но не для MyRequestFactory. Вы можете увидеть раздел [«Привязки в графе» руководства пользователя Dagger 2] (http://google.github.io/dagger/users-guide.html#bindings-in-the-graph) для получения подробной информации, но достаточно сказать, что Dagger будет обрабатывать запросы для «Provider», 'Lazy ', или даже 'Provider >' для любого 'T', который вы предоставляете с помощью метода' @ Provides' или иначе. –
Извините за опечатку Я имел в виду только MyRequestFactory. Я обязательно перейду по предложенной вами ссылке. Еще раз спасибо @Jeff Bowman – shyguy