RoboGuice:在普通班级手工注入课程

时间:2014-09-08 16:38:00

标签: java android dependency-injection roboguice

我有一些接口,一些混凝土类实现了这些接口。我在AbstractModule课程中配置。

但我的问题是:@Inject只适用于RoboGuice类,例如RoboFragmentRoboActivity ......

例如:

public class Fragment extends RoboFragment {

  @Inject
  ICustomClass helper; // work. helper will be initialized and call successfully. 

}

public class JavaNormalClass {
  @Inject
  ICustomClass helper;  // doesn't work. NullPointerException
}

所以,我认为RoboGuice在正常课程中不会注入自定义课程,所以我应该手动调用它。 (我猜!!!)那么,如何解决我的问题?

谢谢:)

1 个答案:

答案 0 :(得分:0)

这个简单的解决方案适合我。

在调用任何@Inject成员之前,您需要输入以下代码。最好的方法可能是普通类的构造函数或活动的onCreate ......

public class CustomClass {

   @Inject
   IDBDAL dbDAL;

   // can be application context or activity context
   private Context mContext;

   public CustomClass() {
      // you can get context variable somewhere else 
      mContext = MyApplication.getAppContext(); 
      RoboGuice.getInjector(mContext).injectMembersWithoutViews(this);
      // from now. you can use dbDAL object
      dbDAL.doSomething(); // work like charm :)
   }
}

我认为这个解决方案是通用的,可以应用于多种情况。希望这有帮助:)