package com.wealthfront.magellan.support; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import com.wealthfront.magellan.Navigator; public abstract class SingleActivity extends AppCompatActivity { private static Navigator navigator; protected abstract Navigator createNavigator(); public static Navigator getNavigator() { return navigator; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (navigator == null) { navigator = createNavigator(); } } @Override protected void onPostCreate(@Nullable Bundle savedInstanceState) { navigator.onCreate(this, savedInstanceState); super.onPostCreate(savedInstanceState); } @Override public void onSaveInstanceState(Bundle outState) { navigator.onSaveInstanceState(outState); } @Override protected void onResume() { super.onResume(); navigator.onResume(this); } @Override protected void onPause() { navigator.onPause(this); super.onPause(); } @Override protected void onDestroy() { navigator.onDestroy(this); super.onDestroy(); } @Override public void onBackPressed() { if (!navigator.handleBack()) { super.onBackPressed(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { navigator.onCreateOptionsMenu(menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onPrepareOptionsMenu(Menu menu) { navigator.onPrepareOptionsMenu(menu); return super.onPrepareOptionsMenu(menu); } }