0

在我的 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 中,要么注入到另一个已注入 RoboActivity 的类(例如 C 类)中?

4

1 回答 1

0

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

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

RoboInjector injector = RoboGuice.getInjector(context);
injector.injectMembersWithoutViews(yourObjectB);
于 2013-05-06T17:33:35.000 回答