@Controller(DemosController.class) @DaggerModule(DemosModule.class) public class DemoScreen extends Screen { }
@Override protected Scoop addServices(Scoop.Builder scoopBuilder, Screen screen, Scoop parentScoop) { DaggerInjector parentDagger = DaggerInjector.fromScoop(parentScoop); DaggerModule daggerModule = screen.getClass().getAnnotation(DaggerModule.class); if (daggerModule == null) { return scoopBuilder.service(DaggerInjector.SERVICE_NAME, parentDagger).build(); } DaggerInjector screenInjector; try { final Object module = daggerModule.value().newInstance(); screenInjector = parentDagger.extend(module); } catch (Throwable e) { throw new RuntimeException("Failed to instantiate module for screen: " + screen.getClass().getSimpleName(), e); } return scoopBuilder .service(DaggerInjector.SERVICE_NAME, screenInjector).build(); } }
@Controller(HorizontalSlideController.class) @DaggerModule(HorizontalSlideModule.class) public class HorizontalSlideScreen extends Screen { }
@DaggerModule(LayoutModule.class) @Layout(R.layout.layout_sample) public class LayoutScreen extends Screen { final String param; public LayoutScreen(final String param) { this.param = param; } public String getParam() { return this.param; } }
@Controller(ParametrizedController.class) @DaggerModule(ParametrizedModule.class) public class ParametrizedScreen extends Screen { private final String args; public ParametrizedScreen(String args) { this.args = args; } public String getArgs() { return args; } }
@Controller(EnterLastNameController.class) @DaggerModule(EnterLastNameModule.class) public class EnterLastNameScreen extends Screen { }
@Controller(AController.class) @DaggerModule(AModule.class) public class AScreen extends Screen { }
@Controller(ConfirmationController.class) @DaggerModule(ConfirmationModule.class) public class ConfirmationScreen extends Screen { }
@Controller(DialogController.class) @DaggerModule(DialogModule.class) public class Dialog extends Screen { }
@Controller(BController.class) @DaggerModule(BModule.class) public class BScreen extends Screen { }
@Controller(CController.class) @DaggerModule(CModule.class) public class CScreen extends Screen { }
@Controller(VerticalSlideController.class) @DaggerModule(VerticalSlideModule.class) public class VerticalSlideScreen extends Screen { }
@Controller(AutoTransitionEndController.class) @DaggerModule(AutoTransitionEndModule.class) public class AutoTransitionEndScreen extends Screen { }
@Controller(FadeController.class) @DaggerModule(FadeModule.class) public class FadeScreen extends Screen { }
@Controller(DialogDisableOnBackController.class) @DaggerModule(DialogModule.class) public class DialogDisableOnBack extends Screen { }
@Controller(AutoTransitionStartController.class) @DaggerModule(AutoTransitionStartModule.class) public class AutoTransitionStartScreen extends Screen { }
@Controller(NestedLayoutViewController.class) @DaggerModule(NestedLayoutModule.class) public class NestedLayoutScreen extends Screen { }
@Controller(EnterFirstNameController.class) @DaggerModule(EnterFirstNameModule.class) public class EnterFirstNameScreen extends Screen { }
@DaggerModule(TestModule.class) private static class TestScreen extends Screen { }