当RoboGuice @Inject注入的类可能为空时?

时间:2013-10-04 09:56:11

标签: java android guice inject roboguice

当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。

1 个答案:

答案 0 :(得分:3)

RoboGuice没有机会向您的MyHandler实例注入任何内容,因为您使用new来创建它,而不是让它由DI框架创建。我不熟悉RoboGuice(只有简单的Guice),但可能有一种方法可以让你自己创建实例后让注射器注入成员。虽然我认为恢复代码更好,所以实例是由RoboGuice创建的。