2013-10-04 2 views
0

Когда roboguice's @Inject может быть пустым?Когда класс, введенный RoboGuice @Inject, может быть нулевым?

У меня есть класс:

@Singleton 
public class MyClass extends AnotherClass{ ... 

Во многих местах я использую

@Inject private MyClass mMyClass; 

и он работает правильно.

Недавно я написал простые события обработки событий из шины событий. Этот класс создается и регистрируется в главной теме. В этом классе я ввожу 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.

ответ

3

RoboGuice не имеет возможности впрыскивать что-либо в ваш экземпляр MyHandler, потому что вы используете new, чтобы создать его, вместо того, чтобы создать его с помощью рамки DI. Я не знаком с RoboGuice (только простой Guice), но, вероятно, есть способ попросить инжектора ввести пользователей после создания экземпляра самостоятельно. Хотя я думаю, что лучше зарезервировать код, чтобы экземпляр был создан RoboGuice в первую очередь.

Смежные вопросы