【问题标题】:When class injected by RoboGuice @Inject could be null?RoboGuice @Inject 注入的类何时可以为空?
【发布时间】:2013-10-04 09:56:10
【问题描述】:

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。

【问题讨论】:

    标签: java android guice inject roboguice


    【解决方案1】:

    RoboGuice 没有机会向您的 MyHandler 实例注入任何内容,因为您使用 new 创建它,而不是由您的 DI 框架创建它。我不熟悉 RoboGuice(只有普通的 Guice),但可能有一种方法可以让注入器在您自己创建实例后注入成员。虽然我认为最好重新构造代码,以便首先由 RoboGuice 创建实例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多