2013-10-04 2 views
0

roboguice의 @Inject이 null 일 수 있습니까? 내가RoboGuice @Inject에 의해 주입 된 클래스가 null 일 수 있습니까?

@Inject private MyClass mMyClass; 

를 사용하고 있는데이 제대로 작동 여러 곳에서

@Singleton 
public class MyClass extends AnotherClass{ ... 

:

나는 클래스가 있습니다.

최근 이벤트 버스에서 간단한 클래스 처리 이벤트를 작성했습니다. 이 클래스는 메인 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을 사용하고 있습니다.

답변

3

RoboGuice는 DI 프레임 워크에서 생성하지 않고 new을 사용하여이 인스턴스를 만들므로 MyHandler 인스턴스에 아무것도 삽입 할 수 없습니다. 나는 RoboGuice (평범한 Guice 만)에 익숙하지 않지만 인젝터에 직접 인스턴스를 생성 한 후에 멤버를 주입 할 수있는 방법이있을 것입니다. 처음에는 RoboGuice가 인스턴스를 생성하도록 코드를 다시 작성하는 것이 더 좋습니다.