2014-04-08 4 views
0

내 기본 POJO 클래스 :Roboguice 2.0 (안드로이드) : (항상 null) POJO 주입 오류

public class BaseDao { 
    public BaseDao() { 
    } 
    // ... 
} 

내는 POJO 클래스 확장 :

public class KelvinDao extends BaseDao { 
    public KelvinDao() { 
     super(); 
    } 
    // ... 
} 

내가 그런 서비스 KelvinDao를 사용하려면를 :

public class HanKelvinHandler extends HttpRequestHandler { 

    @Inject 
    private KelvinDao mKelvinDao; 

    public void treatGet() { 
     mKelvinDao.blabla(); !!! mKelvinDao is always NULL 
    } 

정말 간단하지만 작동하지 않습니다 :(

도와 주셔서 감사합니다!

답변

1

어떻게 HanKelvinHandler를 만드십니까? RoboActivity와 같은 RoboGuice 클래스의 하위 클래스에서이 작업을 수행하는 경우 작동해야합니다. 예 :

public class MyActivity extends RoboActivity 
{ 
    @Inject 
    private HanKelvinHandler m_handler; 
    [...] 
} 

그렇지 않으면 (즉, 다른 POJO 내에서 그것을 만들), 당신은 정기적으로 Guice 땅에있어, 나는 당신이 그것의 인스턴스를 얻기 위해 주사기를 사용해야합니다 생각합니다. 예 :

https://github.com/roboguice/roboguice/wiki/Simple-Custom-Binding :

이전에 인젝터의 사용을 보지 않았거나 (YourGuiceBindings을 위해 무엇을 입력해야되는지 모르는 경우
public class MyClass 
{ 
    public void doSomething() 
    { 
     Injector injector = Guice.createInjector(new YourGuiceBindings()); 
     HanKelvinHandler handler = injector.getInstance(HanKelvinHandler.class); 
     handler.treatGet(); // mKelvinDao should be good now 
    } 
} 

), 당신은 다음과 같은 읽어 들일 필요가 있습니다 인젝터를 사용하지 않고 할 수있는 방법이 있어야한다처럼

https://code.google.com/p/google-guice/wiki/GettingStarted

이 보인다,하지만 난 모르겠어요.