【问题标题】:Roboguice 2.0 (android): POJO injection error (always null)Roboguice 2.0 (android):POJO 注入错误(始终为空)
【发布时间】:2014-04-08 08:28:07
【问题描述】:

我的基础 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
   }

这很简单,但它不起作用:(

谢谢大家的帮助!

【问题讨论】:

    标签: android inject roboguice


    【解决方案1】:

    你是如何创建 HanKelvinHandler 的?如果您在 RoboGuice 类的子类中执行此操作,例如 RoboActivity,那么它应该可以正常工作。示例:

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

    否则(即,您在另一个 POJO 中创建它),您在常规的 Guice 领域,我相信您将需要使用注入器来获取它的实例。示例:

    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
        }
    }
    

    如果你之前没有见过注入器的使用,或者你不知道为 YourGuiceBindings() 放什么,那么你可能需要阅读以下内容:

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

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

    似乎应该有一种方法可以在不使用注射器的情况下做到这一点,但我不知道。

    【讨论】:

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