我有匕首设置并正确定义了注射剂,但得到以下errpr:
我看到了几个相似的帖子,但答案没有解决这个问题
java.lang.IllegalArgumentException:没有为members / com.aryaxt.app.Pages.LoginActivity注册注入。您必须将其明确地添加到其中一个模块的“注入”选项中。
模块
@Module(library = true, injects = {
LoginActivity.class
})
class MyModule {
private final Context context;
public MyModule() {
}
@Provides @Singleton
IAuthService provideAuthService() {
return new AuthService();
}
}
应用
public class MyApplication extends Application {
private ObjectGraph objectGraph;
@Override
public void onCreate() {
super.onCreate();
objectGraph = ObjectGraph.create(new MyModule());
}
public ObjectGraph getObjectGraph() {
return objectGraph;
}
}
活动
public class LoginActiity extends ActionBarActivity {
@Inject
IAuthService authService;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((MyApplication) getApplication()).getObjectGraph().inject(this);
}
}
修改
02-03 07:54:43.934 3305-3305/com.aryaxt.MyApp E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.aryaxt.MyApp, PID: 3305
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.aryaxt.MyApp/com.aryaxt.MyApp.Pages.LoginActivity}: java.lang.IllegalArgumentException: No inject registered for members/com.aryaxt.MyApp.Pages.LoginActivity. You must explicitly add it to the 'injects' option in one of your modules.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.IllegalArgumentException: No inject registered for members/com.aryaxt.MyApp.Pages.LoginActivity. You must explicitly add it to the 'injects' option in one of your modules.
at dagger.ObjectGraph$DaggerObjectGraph.getInjectableTypeBinding(ObjectGraph.java:302)
at dagger.ObjectGraph$DaggerObjectGraph.inject(ObjectGraph.java:279)
at com.aryaxt.bobber.Pages.BaseActivity.onCreate(BaseActivity.java:18)
at com.aryaxt.bobber.Pages.LoginActivity.onCreate(LoginActivity.java:29)
at android.app.Activity.performCreate(Activity.java:5933)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)