package com.tevinjeffrey.rutgersct.ui; import android.content.Context; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.transition.AutoTransition; import android.transition.ChangeBounds; import android.transition.Fade; import android.view.Menu; import android.view.animation.DecelerateInterpolator; import android.widget.ImageView; import com.tevinjeffrey.rutgersct.R; import com.tevinjeffrey.rutgersct.RutgersCTApp; import com.tevinjeffrey.rutgersct.services.Alarm; import com.tevinjeffrey.rutgersct.ui.trackedsections.TrackedSectionsFragment; import com.tevinjeffrey.rutgersct.utils.PreferenceUtils; import javax.inject.Inject; import icepick.Icepick; import icepick.Icicle; import jonathanfinerty.once.Once; public class MainActivity extends AppCompatActivity { public final static String SHOW_TOUR = "showTour"; @Inject Context context; @Inject PreferenceUtils mPreferenceUtils; @Icicle public int mBackstackCount; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!Once.beenDone(Once.THIS_APP_INSTALL, SHOW_TOUR)) { Intent intent = new Intent(this, IntroActivity.class); startActivity(intent); finish(); } RutgersCTApp.getObjectGraph(this).inject(this); setContentView(R.layout.activity_main); Icepick.restoreInstanceState(this, savedInstanceState); if (savedInstanceState == null) { TrackedSectionsFragment tsf = new TrackedSectionsFragment(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { tsf.setEnterTransition(new AutoTransition().excludeTarget(ImageView.class, true)); tsf.setExitTransition(new Fade(Fade.OUT).excludeTarget(ImageView.class, true)); tsf.setReenterTransition(new AutoTransition().excludeTarget(ImageView.class, true)); tsf.setReturnTransition(new Fade(Fade.IN).excludeTarget(ImageView.class, true)); tsf.setAllowReturnTransitionOverlap(false); tsf.setAllowEnterTransitionOverlap(false); tsf.setSharedElementEnterTransition(new ChangeBounds().setInterpolator(new DecelerateInterpolator())); tsf.setSharedElementReturnTransition(new ChangeBounds().setInterpolator(new DecelerateInterpolator())); } getFragmentManager().beginTransaction() .replace(R.id.container, tsf) .commit(); } RutgersCTApp.getObjectGraph(this).get(Alarm.class).setAlarm(); } @Override public boolean onCreateOptionsMenu(Menu menu) { return true; } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); Icepick.saveInstanceState(this, outState); } @Override public void onBackPressed() { if (getBackstackCount() > 0) { decrementBackstackCount(); getFragmentManager().popBackStackImmediate(); } else { finish(); } } //Helper methods to manage the back stack count. The count return from // getFragmentManager().getbackstackCount() is unreliable when using transitions public int getBackstackCount() { return mBackstackCount; } public void incrementBackstackCount() { ++mBackstackCount; } public void decrementBackstackCount() { --mBackstackCount; } }