2014-10-29 1 views
3

Я пытаюсь реализовать Кинжал в своем приложении, и у меня есть экземпляр, где мне нужно ввести поле в класс в иерархии класса Activity, но детям этого класса не нужны какие-либо введенные члены. Иерархия выглядит так:Может ли кинжал ввести абстрактный класс активности без инъекции ребенка Класс активности?

BaseActivity -> NavigationActivity -> HomePageActivity.

Я пытаюсь придать поле в NavigationActivity, но я получаю следующее исключение из Dagger:

java.lang.IllegalArgumentException: No inject registered for members/com.quidsi.diapers.activity.HomePageActivity. You must explicitly add it to the 'injects' option in one of your modules. 

Мой модуль выглядит такой

@Module(
    injects = NavigationActivity.class 
) 
public class GestureModule { 

    @Provides 
    GestureInterface provideGestureInterface() { 
     return new MockDrawerGesture(); 
    } 
} 

Возможно ли это с кинжалом или мне нужно для инъекции каждого ребенка NavigationActivity?

ответ

2

Это невозможно с кинжалом 1. Вам также придется вводить подклассифицированные действия. И да, к сожалению, это означает, что вы должны добавить все эти классы в список инъекций в свой GestureMmodule.

Кинжал 2 находится за углом, возможно, там все изменилось.

+2

Dagger2 также требует, чтобы подклассы были введены, но он генерирует ошибку компиляции, а не ошибку времени выполнения, если в методах интерфейса компонента отсутствует заданная 'void injection (SomethingActivity somethingActivity)'. – EpicPandaForce

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