diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java index 451dc4ee00..c9d03f4633 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/MainActivity.java @@ -146,45 +146,44 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On private void loadHomeFragment(boolean addToBackStack) { Fragment fragment = HomeFragment.newInstance(); - loadFragment(fragment, getString(R.string.home), getString(R.string.tagFragmentHome), addToBackStack); + loadFragment(fragment, getString(R.string.home), getString(R.string.tagFragmentHome), addToBackStack, true); } private void loadLoginFragment() { Fragment fragment = LoginFragment.newInstance(); - loadFragment(fragment, getString(R.string.login), getString(R.string.tagFragmentLogin), true); + loadFragment(fragment, getString(R.string.login), getString(R.string.tagFragmentLogin), true, true); } private void loadSignedInFragment() { Fragment fragment = SignedInFragment.newInstance(); - loadFragment(fragment, getString(R.string.welcome), getString(R.string.tagFragmentSignedIn), true); + loadFragment(fragment, getString(R.string.welcome), getString(R.string.tagFragmentSignedIn), true, true); } private void loadSignupFragment() { Fragment fragment = SignupFragment.newInstance(); - - loadFragment(fragment, getString(R.string.signup), getString(R.string.tagFragmentSignup), true); + loadFragment(fragment, getString(R.string.signup), getString(R.string.tagFragmentSignup), true, false); } private void loadPrivacyPolicyFragment() { Fragment fragment = PolicyFragment.newInstance(); - loadFragment(fragment, getString(R.string.privacyPolicy), getString(R.string.tagFragmentPolicy), true); + loadFragment(fragment, getString(R.string.privacyPolicy), getString(R.string.tagFragmentPolicy), true, true); } private void loadPeopleFragment() { Fragment fragment = FriendsFragment.newInstance(); - loadFragment(fragment, getString(R.string.people), getString(R.string.tagFragmentPeople), true); + loadFragment(fragment, getString(R.string.people), getString(R.string.tagFragmentPeople), true, true); } private void loadSettingsFragment() { SettingsFragment fragment = SettingsFragment.newInstance(); - loadFragment(fragment, getString(R.string.settings), getString(R.string.tagSettings), true); + loadFragment(fragment, getString(R.string.settings), getString(R.string.tagSettings), true, true); } - private void loadFragment(Fragment fragment, String title, String tag, boolean addToBackStack) { + private void loadFragment(Fragment newFragment, String title, String tag, boolean addToBackStack, boolean goBackUntilHome) { FragmentManager fragmentManager = getFragmentManager(); // check if it's the same fragment @@ -196,17 +195,19 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On return; // cancel as we are already in that fragment } - // go back until first transaction - int backStackEntryCount = fragmentManager.getBackStackEntryCount(); - for (int i = 0; i < backStackEntryCount - 1; i++) { - fragmentManager.popBackStackImmediate(); + if (goBackUntilHome) { + // go back until first transaction + int backStackEntryCount = fragmentManager.getBackStackEntryCount(); + for (int i = 0; i < backStackEntryCount - 1; i++) { + fragmentManager.popBackStackImmediate(); + } } // this case is when we wanted to go home.. rollback already did that! // But asking for a new Home fragment makes it easier to have an updated list so we let it to continue FragmentTransaction ft = fragmentManager.beginTransaction(); - ft.replace(R.id.content_frame, fragment, tag); + ft.replace(R.id.content_frame, newFragment, tag); if (addToBackStack) { ft.addToBackStack(title); @@ -354,7 +355,8 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On @Override public void onLoginRequested() { - loadLoginFragment(); + // go back from signup to login + onBackPressed(); } @Override