2016-04-25 2 views
1

Так что я изучаю Кинжал 2, и есть одна вещь, которую я не совсем понимаю. Так что я понимаю, что в компоненте необходимо specifiy деятельность, которая может быть использована для введения в:Впрыск кинжала для различных видов деятельности

Singleton 
@Component(modules={AppModule.class, NetModule.class}) 
public interface NetComponent { 
    void inject(MainActivity activity); 
} 

Прежде всего, почему я должен указать это? (Я никогда не пользовался переменной активностью).

Но главный вопрос - сказать, что у меня есть 10 различных видов деятельности или фрагментов, которые мне нужны, чтобы перечислить их все здесь? Это правильный способ сделать это, или, может быть, мы можем ввести в приложение? Что нужно делать, если я хочу использовать NetComponent во всем приложении.

Благодаря

ответ

1

Если у вас есть один компонент поставки для каждого из ваших действий, так да. Вы должны написать метод inject() для каждого.

Также обратите внимание, что вы не можете использовать инъекции, чтобы базовый класс, потому что он будет производить эту ошибку: https://github.com/google/dagger/issues/214

Хорошо:

@Singleton 
@Component(modules={AppModule.class, NetModule.class}) 
public interface NetComponent { 
    void inject(MainActivity activity); 
    void inject(SplashActivity activity); 
    void inject(AnotherActivity activity); 
} 

Bad:

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

Также, если вы не хотите вводить инъекции, но только получаете свой сервис API и т. Д., Вы не можете вводить, но используйте:

@Singleton 
@Component(modules={AppModule.class, NetModule.class}) 
public interface NetComponent { 
    SomeNetworkOrApiClass getNetworking(); 
} 

И только получите свою сеть от своего компонента, когда вам это нужно.

Попробуйте прочитать эти полезные статьи:

https://github.com/codepath/android_guides/wiki/Dependency-Injection-with-Dagger-2

https://github.com/konmik/konmik.github.io/wiki/Snorkeling-with-Dagger-2

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