Android RoboGuice.getInjector引发异常
我试着在我的android项目中开始使用RoboGuice 2,它可以正常工作,除非我尝试使用它在活动中注入视图。如果我尝试从RoboActivity扩展我的活动,或者在onCreate方法中手动调用RoboGuice.getInjector(上下文),我会遇到以下异常:Android RoboGuice.getInjector引发异常,android,roboguice,Android,Roboguice,我试着在我的android项目中开始使用RoboGuice 2,它可以正常工作,除非我尝试使用它在活动中注入视图。如果我尝试从RoboActivity扩展我的活动,或者在onCreate方法中手动调用RoboGuice.getInjector(上下文),我会遇到以下异常: FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity}: com.google.inject.ConfigurationE
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity}: com.google.inject.ConfigurationException: Guice configuration errors:
1) Could not find a suitable constructor in roboguice.inject.ContextScope. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private.
at roboguice.inject.ContextScope.class(Unknown Source)
while locating roboguice.inject.ContextScope
1 error
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
at android.app.ActivityThread.access$700(ActivityThread.java:159)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
at dalvik.system.NativeStart.main(Native Method)
Caused by: com.google.inject.ConfigurationException: Guice configuration errors:
1) Could not find a suitable constructor in roboguice.inject.ContextScope. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private.
at roboguice.inject.ContextScope.class(Unknown Source)
while locating roboguice.inject.ContextScope
1 error
at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1004)
at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:961)
at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1013)
at roboguice.inject.ContextScopedRoboInjector.<init>(ContextScopedRoboInjector.java:27)
at roboguice.RoboGuice.getInjector(RoboGuice.java:149)
...
致命异常:main
java.lang.RuntimeException:无法启动活动}:com.google.inject.ConfigurationException:GUI配置错误:
1) 在roboguice.inject.ContextScope中找不到合适的构造函数。类必须有一个(并且只有一个)用@Inject注释的构造函数,或者一个非私有的零参数构造函数。
位于roboguice.inject.ContextScope.class(未知源)
查找roboguice.inject.ContextScope时
1错误
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
在android.app.ActivityThread.access$700(ActivityThread.java:159)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:176)
位于android.app.ActivityThread.main(ActivityThread.java:5419)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:525)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
在dalvik.system.NativeStart.main(本机方法)
原因:com.google.inject.ConfigurationException:Guice配置错误:
1) 在roboguice.inject.ContextScope中找不到合适的构造函数。类必须有一个(并且只有一个)用@Inject注释的构造函数,或者一个非私有的零参数构造函数。
位于roboguice.inject.ContextScope.class(未知源)
查找roboguice.inject.ContextScope时
1错误
位于com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1004)
位于com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:961)
位于com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1013)
在roboguice.inject.ContextScopedRoboInjector。(ContextScopedRoboInjector.java:27)
位于roboguice.roboguice.getInjector(roboguice.java:149)
...
我使用maven使用以下依赖项将GUI添加到我的项目中
<dependency>
<groupId>org.roboguice</groupId>
<artifactId>roboguice</artifactId>
<version>2.0</version>
</dependency>
org.roboguice
机器人向导
2
任何帮助都将不胜感激。默认情况下,RoboGuice将尝试使用默认构造函数创建对象。您的对象似乎没有默认构造函数。 您可以通过以下方式解决此问题:
- 注释要与
一起使用的构造函数(并确保RoboGuice也可以创建该构造函数的所有参数)@Inject
- 在尝试注入的对象中创建默认构造函数
- 如果您无法控制要注入的对象,则可以在注入阶段使用提供程序来构造该对象
Injector injector =
RoboGuice.setBaseApplicationInjector(
this, Stage.PRODUCTION,
Modules.override(RoboGuice.newDefaultRoboModule(this)).with(new MyModule())
);
一切都按预期进行
无论如何,谢谢你