在我的Android应用项目中,我使用 RoboGuice 。
在我的项目中,我有一个单身 A类:
@ContextSingleton
public class A{
…
public void method1(){…}
}
然后,我有另一个需要A实例的B类,所以,在RoboGuice方式中,我通常用注入声明B类中的A实例:
public class B {
@Inject private A a ;
public void action(){
a.method1(); // call method1() of class A's instance
}
}
有时,我在B类中声明的A实例得到 NullPointerException 。我只想验证RoboGuice的一个概念:
是否为了在B类中注入自定义类(例如A类)的实例,B类必须注入RoboActivity或者注入另一个已经注入的类(例如C类)在RoboActivity?
答案 0 :(得分:0)
您可能自己在某处实例化了B(new B()
),然后您需要手动调用Injector。
当RoboGuice创建实例B时,它会自动注入依赖关系A,但是当你自己创建B时,RoboGuice不会知道它,你必须自己调用注入代码。这可以通过调用:
来完成RoboInjector injector = RoboGuice.getInjector(context);
injector.injectMembersWithoutViews(yourObjectB);