dagger icon indicating copy to clipboard operation
dagger copied to clipboard

Problem adding modules

Open joanpuigsanz opened this issue 12 years ago • 0 comments

I'm having some issues with the modules. I've created a few modules (https://github.com/joanpuigsanz/dependency_injection_android/tree/master/KitKatMachine_dagger/src/com/kitkatmachine/module) and I'm using the same ActivityModule provided in the examples but when I change the IngredientsModule from this:

@Module(library = true)
public class IngredientsModule {

        @Provides public Chocolate provideChocolate() {
                return new ChocolateWithMilk();
        }

        @Provides public Cookie provideCookie(){
                return new TastyCookie();
        }

}

to this:

@Module(
        library = true,
         injects = {
                HomeActivity.class,
                HomeFragment.class
            },
         complete = false)
public class IngredientsModule {

    @Provides public Chocolate provideChocolate() {
        return new ChocolateWithMilk();
    }

    @Provides public Cookie provideCookie(){
        return new TastyCookie();
    }

}

I get this error:

11-20 19:28:55.180: E/AndroidRuntime(1741): FATAL EXCEPTION: main
11-20 19:28:55.180: E/AndroidRuntime(1741): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kitkatmachine/com.kitkatmachine.ui.HomeActivity}: java.lang.IllegalStateException: Errors creating object graph:
11-20 19:28:55.180: E/AndroidRuntime(1741):   No injectable members on android.app.Activity. Do you want to add an injectable constructor? required by class com.kitkatmachine.ui.ActivityTitleController
11-20 19:28:55.180: E/AndroidRuntime(1741):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at android.os.Looper.loop(Looper.java:137)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at android.app.ActivityThread.main(ActivityThread.java:5103)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at java.lang.reflect.Method.invokeNative(Native Method)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at java.lang.reflect.Method.invoke(Method.java:525)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at dalvik.system.NativeStart.main(Native Method)
11-20 19:28:55.180: E/AndroidRuntime(1741): Caused by: java.lang.IllegalStateException: Errors creating object graph:
11-20 19:28:55.180: E/AndroidRuntime(1741):   No injectable members on android.app.Activity. Do you want to add an injectable constructor? required by class com.kitkatmachine.ui.ActivityTitleController
11-20 19:28:55.180: E/AndroidRuntime(1741):     at dagger.internal.ThrowingErrorHandler.handleErrors(ThrowingErrorHandler.java:34)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at dagger.internal.Linker.linkRequested(Linker.java:146)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at dagger.internal.Linker.linkAll(Linker.java:88)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at dagger.ObjectGraph$DaggerObjectGraph.linkEverything(ObjectGraph.java:223)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at dagger.ObjectGraph$DaggerObjectGraph.plus(ObjectGraph.java:189)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at com.kitkatmachine.ui.BaseFragmentActivity.onCreate(BaseFragmentActivity.java:44)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at com.kitkatmachine.ui.HomeActivity.onCreate(HomeActivity.java:26)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at android.app.Activity.performCreate(Activity.java:5133)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
11-20 19:28:55.180: E/AndroidRuntime(1741):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
11-20 19:28:55.180: E/AndroidRuntime(1741):     ... 11 more

I don't know what I'm doing wrong, I think I need the injects = {HomeActivity.class, HomeFragment.class } because I'm injecting some stuff in the HomeFragment, Can you help me understanding it??

NOTE: Here all the code https://github.com/joanpuigsanz/dependency_injection_android/

joanpuigsanz avatar Nov 20 '13 19:11 joanpuigsanz