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

10-10 18:03