2013-05-06 1 views
0

В моем проекте приложения для Android я использую RoboGuice.RoboGuice @Inject

В моем проекте, у меня есть одноплодные Класса A:

@ContextSingleton 
public class A{ 
    … 
    public void method1(){…} 
} 

Тогда, у меня есть еще один класс B, который нуждается в экземпляре А, так, в RoboGuice образом, я обычно объявляю экземпляр внутри класса B с инъекции:

public class B { 
    @Inject private A a ; 

    public void action(){ 
     a.method1(); // call method1() of class A's instance 
    } 
} 

Иногда я NullPointerException для экземпляра Заявленный в классе B Я просто хочу проверить одну концепцию RoboGuice:

Действительно ли это так, чтобы инжектировать экземпляр пользовательского класса (например, класс A) в классе B, класс B должен быть либо введен в RoboActivity, либо быть введен в другой класс (например, класс C), который был введен в RoboActivity?

ответ

0

Вы, вероятно, создаете экземпляр B где-то самостоятельно (new B()), а затем вам нужно вызвать инжектор вручную.

Когда RoboGuice создает экземпляр B, он автоматически введет зависимость A, но когда вы создаете B самостоятельно, RoboGuice не узнает об этом, и вы должны сами вызвать код для инъекций. Это можно сделать, позвонив по телефону:

RoboInjector injector = RoboGuice.getInjector(context); 
injector.injectMembersWithoutViews(yourObjectB);