这个问题可能与这个问题完全相同使用 Guice 将参数传递给构造函数 https://stackoverflow.com/questions/9237996/pass-parameter-to-constructor-with-guice
不同之处在于我使用 android 版 roboguice,而不仅仅是 Guice,所以那里的答案对我不起作用。
问题是 - 如何将初始化参数传递到创建的对象中? IE。我已经注入了接口,该接口应该使用 roboguice 不知道的一些参数进行初始化。
我在提供的链接中看到的,我应该创建工厂接口并像这样注册它
void configure(Binder binder) {
binder.install(new FactoryModuleBuilder()
.implement(FooInterface.class, Foo.class)
.build(FooFactory.class));
}
但我找不到工厂模块构建器班级。我使用 Intellij IDEA,它可以向我显示我可以在当前位置访问的每个类,并且我可以 100% 确定不存在以以下开头的类'工厂' word.
如何使用 roboguice 创建我的工厂?
UPDATED
我忘记下载了指导辅助注射 http://search.maven.org/#artifactdetails%7Ccom.google.inject.extensions%7Cguice-assistedinject%7C3.0%7Cjar。但我仍然不知道该在哪里注册这个工厂。
UPDATE 2
为什么我需要那个?因为应该存在某些抽象具有 Roboguice 无法解决的依赖关系的情况。这种依赖关系可以是任何类型,甚至是简单的字符串或数字。
就我而言,我在 UI 上有 NumberPicker 控件,并且我想将所有 UI 特定任务移至我的号码选择器包装器班级。当我创建这个包装器时,我通过构造函数注入它的依赖项(此控件)。
如果我对这种方法正确的话,这不是重点,但可能还有很多其他更适用的示例,其中需要构造函数注入,并且 Roboguice 无法创建此注入的类