【问题标题】:RoboGuice @InjectRoboGuice @Inject
【发布时间】:2013-05-06 09:20:12
【问题描述】:

在我的 Android 应用项目中,我使用的是 RoboGuice

在我的项目中,我有一个单例 A类:

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

然后,我有另一个需要 A 实例的 B 类,因此,在 RoboGuice 方式中,我通常使用 injection 在 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 中?

【问题讨论】:

    标签: android dependency-injection roboguice


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 2015-11-12
      • 2016-04-17
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      相关资源
      最近更新 更多