Skip to content

Instantly share code, notes, and snippets.

/**
* Contains bindings to ensure the usability of {@code dagger.android} framework classes. This
* module should be installed in the component that is used to inject the {@link
* android.app.Application} class.
*/
@Beta
@Module
public abstract class AndroidInjectionModule {
@Multibinds
abstract Map<Class<? extends Activity>, AndroidInjector.Factory<? extends Activity>>
@Module
public class FlombulatorModule {
@Provides
Flumbolator provideFlumBolator() {
System.out.println("I'm the mighty real implementation, give me a break");
return new Flumbolator();
}
}
@goofyahead
goofyahead / activity.java
Last active April 4, 2017 07:20
dependency with injector knowledge
FlumbolatorComponent component = DaggerFlumbolatorComponent.builder()
.anyDependencyModule(new DependencyModule(params))
.build();
component.inject(this);
@Subcomponent(modules = {
FlombulatorModule.class,
MainActivitySubComponent.MainActivityModule.class
})
public interface MainActivitySubComponent extends AndroidInjector<MainActivity> {
@Module
class MainActivityModule {}
@Module(subcomponents = {
MainActivitySubComponent.class,
SecondaryActivitySubComponent.class
})
public abstract class BindingModule {
@Binds
@IntoMap
@ActivityKey(MainActivity.class)
abstract AndroidInjector.Factory<? extends Activity> bindMainActivityInjectorFactory(MainActivitySubComponent.Builder builder);
@Component(
modules = {
AndroidInjectionModule.class,
BindingModule.class,
MyApplicationComponent.AppModule.class
})
interface MyApplicationComponent {
void inject(Dagger2application dagger2application);
public class Dagger2application extends Application implements HasDispatchingActivityInjector {
@Inject
DispatchingAndroidInjector<Activity> dispatchingActivityInjector;
@Override
public void onCreate() {
super.onCreate();
DaggerMyApplicationComponent.create().inject(this);
}
@Config(constants = BuildConfig.class, sdk = 21, application = TestApplication.class)
@RunWith(RobolectricTestRunner.class)
public class TestMainActivity {
private MainActivity mainActivity;
@Before
public void setUp() throws Exception {
}
public class TestApplication extends Application implements HasDispatchingActivityInjector {
@Inject
DispatchingAndroidInjector<Activity> dispatchingActivityInjector;
@Override
public void onCreate() {
super.onCreate();
System.out.println("HEY IM UP TESTING APPLICATION COMPONENT ==========================+>");
DaggerTestApplicationComponent.create().inject(this);
}
@Component(
modules = {
AndroidInjectionModule.class,
TestBindingModule.class,
TestApplicationComponent.TestAppModule.class
})
interface TestApplicationComponent {
void inject(TestApplication app);