package com.example.scoop.basics.scoop; import android.content.Context; import android.util.AttributeSet; import com.example.scoop.basics.rx.ViewSubscriptions; import com.example.scoop.basics.ui.Keyboard; import com.lyft.scoop.LayoutInflater; import com.lyft.scoop.RouteChange; import com.lyft.scoop.ScreenScooper; import com.lyft.scoop.UiContainer; import com.lyft.scoop.ViewControllerInflater; import com.lyft.scoop.dagger.DaggerInjector; import com.lyft.scoop.dagger.DaggerLayoutInflater; import com.lyft.scoop.dagger.DaggerViewControllerInflater; import javax.inject.Inject; import rx.functions.Action1; public class MainUiContainer extends UiContainer { @Inject AppRouter appRouter; @Inject ScreenScooper screenScooper; private ViewSubscriptions subscriptions = new ViewSubscriptions(); public MainUiContainer(Context context, AttributeSet attrs) { super(context, attrs); if (isInEditMode()) { return; } DaggerInjector.fromView(this).inject(this); } @Override protected ViewControllerInflater getViewControllerInflater() { return new DaggerViewControllerInflater(); } @Override protected LayoutInflater getLayoutInflater() { return new DaggerLayoutInflater(); } @Override protected ScreenScooper getScreenScooper() { return screenScooper; } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); if (isInEditMode()) { return; } subscriptions.add(appRouter.observeRouteChange(), onRouteChange); } @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); subscriptions.unsubscribe(); } private Action1<RouteChange> onRouteChange = new Action1<RouteChange>() { @Override public void call(RouteChange routeChange) { // To prevent showing empty screen when activity is closed with "Back" button if (!routeChange.toPath.isEmpty()) { goTo(routeChange); Keyboard.hideKeyboard(MainUiContainer.this); } } }; }