Try this configuration, it works for me. There is really a lack of good documentation about Dagger2, so I studied a few open source code examples that you can find on GitHub, etc. By keyword, for example Dagger2.
Application Level Component
@Singleton @Component(modules = AppModule.class) public interface AppComponent {
Application level module
@Module public class AppModule { @Provides @Singleton Bus provideBus() { return BusProvider.getInstance(); } }
Activity Level Component
@ActivityScope @Component(dependencies=AppComponent.class, modules=MainActivityModule.class) public interface MainActivityComponent { void inject( MainActivity mainActivity ); }
Activity Level Module
@Module public class MainActivityModule { private final MainActivity mActivity; public MainActivityModule( MainActivity activity ) { mActivity = activity; } @Provides MainActivityTitleController provideTitleController() { return new MainActivityTitleController( mActivity ); } }
Android application class
public class MyApplication extends Application { private AppComponent mAppComponent; @Override public void onCreate() { super.onCreate();
And finally, Activity
public class MainActivity extends ActionBarActivity {
source share