@Module 주석 안에 "injects"지시문없이 대거 작업을 수행하려고합니다."injects"지시문을 사용하지 않고 단검 모듈 사용
@Module(
injects = HomeActivity.class,
complete = false
)
public class DemoModule {
// TODO put your application-specific providers here!
}
(편집) : 내 코드에 CTXModules.java
내가했던 부분이다 나는 Android Simple Dagger example
이 내 테스트 프로젝트를 기반으로 작성하는 것은 나에게 문제를주고있는 부분이다 제거하는 것은 "injects = HomeActivity.class"입니다. 그 부분을 제거하기 위해 생성자에서 @Inject 어노테이션으로 자신의 모듈을 표시 할 수 있지만 어떻게 든 그래프에 추가 된 모듈에서는 작동하지 않는다는 것을 알고 있습니다. 그 줄이 있으면 모든 것이 잘 작동합니다.
왜냐하면 나는 단검이 공통 코드 기반을 공유하는 일부 프로젝트의 기초가 될 기본 라이브러리 프로젝트에서 구현 될 것이기 때문에 순간적으로 또는 코드의이 부분을 작성하기 때문에 어떤 수업이 모듈을 주입 할 지 알지 못합니다.
내가 할 수있는 일이 가능한 것일까 요?
Android Module class은 해당 지침을 사용하지 않았기 때문에 가능하다고 생각합니다.
희망이 충분히 있습니다. 미리 감사드립니다!
(EDIT)
나는 그것을 언급해야한다. 내 모듈에서는 "injects = HomeActivity.class"를 제거하고 Android Module class처럼 "library = true"를 추가합니다. 또한
12-10 09:21:16.807: E/AndroidRuntime(21783): FATAL EXCEPTION: main
12-10 09:21:16.807: E/AndroidRuntime(21783): Process: com.ef.daggertestproject, PID: 21783
12-10 09:21:16.807: E/AndroidRuntime(21783): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ef.daggertestproject/com.ef.daggertestproject.MainActivity}: java.lang.IllegalArgumentException: No inject registered for members/com.ef.daggertestproject.MainActivity. You must explicitly add it to the 'injects' option in one of your modules.
12-10 09:21:16.807: E/AndroidRuntime(21783): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2176)
12-10 09:21:16.807: E/AndroidRuntime(21783): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2226)
12-10 09:21:16.807: E/AndroidRuntime(21783): at android.app.ActivityThread.access$700(ActivityThread.java:135)
12-10 09:21:16.807: E/AndroidRuntime(21783): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1397)
12-10 09:21:16.807: E/AndroidRuntime(21783): at android.os.Handler.dispatchMessage(Handler.java:102)
12-10 09:21:16.807: E/AndroidRuntime(21783): at android.os.Looper.loop(Looper.java:137)
12-10 09:21:16.807: E/AndroidRuntime(21783): at android.app.ActivityThread.main(ActivityThread.java:4998)
12-10 09:21:16.807: E/AndroidRuntime(21783): at java.lang.reflect.Method.invokeNative(Native Method)
12-10 09:21:16.807: E/AndroidRuntime(21783): at java.lang.reflect.Method.invoke(Method.java:515)
12-10 09:21:16.807: E/AndroidRuntime(21783): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
12-10 09:21:16.807: E/AndroidRuntime(21783): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
12-10 09:21:16.807: E/AndroidRuntime(21783): at dalvik.system.NativeStart.main(Native Method)
12-10 09:21:16.807: E/AndroidRuntime(21783): Caused by: java.lang.IllegalArgumentException: No inject registered for members/com.ef.daggertestproject.MainActivity. You must explicitly add it to the 'injects' option in one of your modules.
12-10 09:21:16.807: E/AndroidRuntime(21783): at dagger.ObjectGraph$DaggerObjectGraph.getInjectableTypeBinding(ObjectGraph.java:281)
12-10 09:21:16.807: E/AndroidRuntime(21783): at dagger.ObjectGraph$DaggerObjectGraph.inject(ObjectGraph.java:258)
12-10 09:21:16.807: E/AndroidRuntime(21783): at com.ef.daggertestproject.MyApplication.inject(MyApplication.java:47)
12-10 09:21:16.807: E/AndroidRuntime(21783): at com.ef.daggertestproject.BaseActivity.onCreate(BaseActivity.java:27)
12-10 09:21:16.807: E/AndroidRuntime(21783): at com.ef.daggertestproject.MainActivity.onCreate(MainActivity.java:16)
12-10 09:21:16.807: E/AndroidRuntime(21783): at android.app.Activity.performCreate(Activity.java:5243)
12-10 09:21:16.807: E/AndroidRuntime(21783): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
12-10 09:21:16.807: E/AndroidRuntime(21783): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2140)
12-10 09:21:16.807: E/AndroidRuntime(21783): ... 11 more
, 내가 my test project to github
(최종 편집) 업로드 한 제이크의 대답에 따라 : "모듈을 선언 무엇 다음 일이 내가 (내 나쁜 내가 전에 그것을 추가하지 않음)이 오류가 있다는 것입니다 도서관이 주사위 점에 대해 알기 위해 단검의 필요성을 경감시키지 못한다. " 그러므로 원래의 질문에 대한 대답은 가능하지 않다는 것입니다.
감사합니다. Jake, 저도 이미 시도했지만 여전히 작동하지 않습니다. 나의 나쁜 나는 그것을 지정하지 않았다. 더 관련성이 높은 정보로 내 질문을 편집했으며 테스트 프로젝트를 github에 추가하고 언급 한 클래스에 대한 링크를 추가했습니다. – spCoder
라이브러리 모듈의 다운 스트림 소비를 표시하기 위해 내 대답을 업데이트했습니다. Dagger에게 주입 할 수 있도록하기 위해 어딘가에'주사 '라고 알려줄 필요가 있습니다. –
편집 시작 부분에 지정한대로 : "모듈을 라이브러리로 선언한다고해서 Dagger가 주입 점을 알 필요가 없습니다." 그러므로 원래의 질문에 대한 대답은 가능하지 않다는 것입니다. 감사합니다. Jake! – spCoder