2013-05-06 72 views
0

在我的Android应用程序项目中,我使用的是RoboGuiceRoboGuice @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类必须注入RoboActivity或注入另一个注入RoboActivity的类(例如C类)?

回答

0

您可能在自己的某处实例化B(new B()),然后您需要手动调用Injector。

当RoboGuice创建实例B时,它会自动注入依赖关系A,但是当您自己创建B时,RoboGuice不会知道它,您必须自己调用注入代码。这可以通过呼叫完成:

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