RoboGuice @Inject

时间:2013-05-06 09:20:13

标签: android dependency-injection roboguice

在我的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?

1 个答案:

答案 0 :(得分:0)

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

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

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