我有一些接口,一些混凝土类实现了这些接口。我在AbstractModule
课程中配置。
但我的问题是:@Inject
只适用于RoboGuice类,例如RoboFragment
,RoboActivity
......
例如:
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
在正常课程中不会注入自定义课程,所以我应该手动调用它。 (我猜!!!)那么,如何解决我的问题?
谢谢:)
答案 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 :)
}
}
我认为这个解决方案是通用的,可以应用于多种情况。希望这有帮助:)