@Override protected ViewController createViewController(Scoop scoop, Class<? extends ViewController> clazz) { DaggerInjector injector = DaggerInjector.fromScoop(scoop); return injector.get(clazz); } }
@Override public View inflateView( Scoop scoop, Screen screen, ViewGroup viewGroup) { View view = super.inflateView(scoop, screen, viewGroup); DaggerInjector injector = DaggerInjector.fromScoop(scoop); injector.inject(view); return view; } }
@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(); } }
public static Scoop extend(final Scoop parentScoop, final Object... modules) { final Screen parentScreen = Screen.fromScoop(parentScoop); final Scoop.Builder scoopBuilder = new Scoop.Builder(parentScreen.getClass().getSimpleName(), parentScoop) .service(Screen.SERVICE_NAME, parentScreen); final DaggerInjector daggerInjector = DaggerInjector.fromScoop(parentScoop).extend(modules); return scoopBuilder .service(DaggerInjector.SERVICE_NAME, daggerInjector).build(); } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Timber.d("onCreate"); setContentView(R.layout.activity_main); getActivityScoop().inflate(R.layout.root, (ViewGroup) findViewById(R.id.root), true); ButterKnife.bind(this); DaggerInjector.fromScoop(getActivityScoop()).inject(this); }