当roboguice的@Inject
可能为空时?
我上课了:
@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。
答案 0 :(得分:3)
RoboGuice没有机会向您的MyHandler
实例注入任何内容,因为您使用new
来创建它,而不是让它由DI框架创建。我不熟悉RoboGuice(只有简单的Guice),但可能有一种方法可以让你自己创建实例后让注射器注入成员。虽然我认为恢复代码更好,所以实例是由RoboGuice创建的。