当roboguice的@Inject
为null时?
我有课:
@Singleton
public class MyClass extends AnotherClass{ ...
我在很多地方使用
@Inject private MyClass mMyClass;
并且它工作正常。
最近,我从事件总线编写了简单的类处理事件。此类在主ui线程中创建和注册。在本课程中,我像在其他地方一样注入
MyClass
,但是现在是null
。@Override
public void onCreate() {
super.onCreate();
...
mMyHandler = new MyHandler(this);
mMyEventBus.register(mMyHandler);
public class MyHandler{
private final Context mContext;
public MyHandler(Context context){
mContext = context;
}
@Inject private MyClass mMyClass;
public void onEventBackgroundThread(MyEvent event) {
mMyClass.someMethod; //mMyClass is null
...
}
}
我正在使用RoboGuice 2.0。
最佳答案
RoboGuice没有机会将任何内容注入到您的MyHandler
实例中,因为您正在使用new
来创建它,而不是由DI框架来创建它。我不熟悉RoboGuice(仅是普通的Guice),但是在您自己创建实例之后,也许有一种方法可以要求注入器注入成员。尽管我认为最好重新构造代码,以便首先由RoboGuice创建实例。
关于java - 当RoboGuice @Inject注入(inject)的类可以为null时?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19178380/