2016-03-30 4 views
3

У меня есть следующие настройки в Dagger, что я пытаюсь перейти на Dagger 2:Dagger 2 инъекционные() содержит цикл зависимости

public class Origin { 
    final A a; 
    public Origin(A a) { 
     this.a = a; 
    } 
} 

public class A { 
    final B b; 
    @Inject public A (B b) { 
     this.b = b; 
    } 
} 

public class B { 
    final Lazy<A> a; 
    @Inject public B (Lazy<A> a) { 
     this.a = a; 
    } 
} 

Тогда на моем модуле у меня есть:

@Provides @Singleton Origin providesOrigin(A a) { 
    return new Origin(a); 
} 

Проблема, даже если я использую Lazy, Dagger 2 дает мне следующую ошибку компиляции времени:

error: AppComponent.inject() contains a dependency cycle

Я что-то упустил? Я попытался заменить Lazy на Provider, но результат тот же.

+0

Я думаю, что это сработает, если вы будете лениться от B до A. –

+0

К сожалению, это не поможет. :( –

+0

Как вы создадите экземпляр с «новым» -значением? У вас будет тот же цикл. – salcosand

ответ

3

Моя проблема заключалась в том, что я использовал версию 2.0 кинжала, где это было все еще открытым issue. Как только я обновил его до текущей версии 2.1, проблемы больше не было.

Смежные вопросы