2015-09-23 20 views
17

Uygulamanın Context diğer 2 nesneye, AuthManager ve ApiClient içine enjekte etmeye çalışıyorum.Hançer 2 - Bu neden bağımlılık döngüsü?

Her ikisi de, söz konusu içeriğe bağlıdır ve ApiClient, AuthManager'a bağlıdır. Context'un diğerlerine 2 referansı yoksa, bu neden bağımlılık döngüsüdür? Bu çözülebilir mi?

DÜZENLEME

: Burada bazı kod bir AuthManager bir AuthManager bağlıdır sağlar

@Module 
public class AppModule { 

    private final Application application; 

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

    @Provides @Singleton 
    Context provideApplicationContext() { 
     return this.application; 
    } 
} 


@Module 
public class NetworkModule { 

    @Provides @Singleton 
    public AuthManager providesAuthManager(AuthManager manager) { 
     return manager; 
    } 

    @Provides @Singleton 
    public ApiClient providesApiClient(ApiClientFactory factory) { 
     return factory.create(); 
    } 
} 

@Singleton 
@Component(modules = {AppModule.class, NetworkModule.class}) 
public interface ApplicationComponent { 
    void inject(BaseActivity activity); 

    // Exported for child-components 
    Context context(); 
    ApiClient apiClient(); 
    AuthManager authManager(); 
} 

cevap

42
@Provides @Singleton 
public AuthManager providesAuthManager(AuthManager manager) { 
    return manager; 
} 

Sizin providesAuthManager yöntemdir.

+0

Bu soruya aldığınız hata mesajlarını eklemenize yardımcı olur. Bu durumda, hata mesajını yanlış şekilde yorumladınız, bu da bize yardım etmemizi zorlaştırıyor :) – nhaarman

+0

Anladım. Kahve makinesi örneğini yanlış anladım, “AuthManager” ı yerel bir param olarak yerleştirerek, hançer ona otomatik enjekte edecekti. "Bağlamı" yerel param olarak belirlemek doğru yol gibi görünüyor. Teşekkürler :) –

+0

Bu yanıt, bir sağlama yöntemini iki kez kontrol etmemi ve basit bir yazım hatası nedeniyle bir şeyleri takip etme çabalarını kaydetmemi sağladı. Teşekkürler! – user3265561

0

providesAuthManager yöntemini kaldırma ve AuthManager Oluşturucu @Inject eklemek :) senin döngüsü var.

+0

Bu, başka bir hataya yol açar: "... açıklamalı açıklama yöntemi olmadan sağlanabilir" – nhoxbypass