我是Roboguice主题的新手...... 我试图在Application.onCreate()方法中正确实例化注入器。 我试过两种方式:
RoboGuice.overrideApplicationInjector(this,
RoboGuice.newDefaultRoboModule(this),
new SettingsModule());
RoboGuice.getOrCreateBaseApplicationInjector(this,
RoboGuice.DEFAULT_STAGE, Modules.override(RoboGuice.newDefaultRoboModule(this)).with(new SettingsModule()));
当我运行其中一个AndroidTestCase时,我得到了两个不同的结果,具体取决于我是否使用了1或2:
com.google.inject.CreationException
:找不到合适的构造函数 my.package.SharedPreferencesStorage。类必须有一个(和 只有一个)使用@Inject或零参数注释的构造函数 非私有的构造函数。
问题是SharedPreferencesStorage 只有一个用@Inject注释的构造函数,所以这个例外很容易产生误导。
此时我可以继续在我的应用程序中使用overrideApplicationInjector()
,但根据文档,它只能用于测试。这是对的吗?在测试类之外使用它有一些暗示吗?
为什么getOnCreateBaseApplicationInjector()
不起作用?
任何提示都表示赞赏!