From 3c9b325e58a7e465ec92ae2e466bc8bac368a007 Mon Sep 17 00:00:00 2001 From: Ram Gudivada Date: Mon, 20 Nov 2017 21:37:10 -0800 Subject: [PATCH] Changed activity creation logic - for home activity it will reuse existing activity from back stack and also clears all current activities - for nearby, about and settings, it will use the existing activity from back stack --- .../fr/free/nrw/commons/AboutActivity.java | 5 --- .../free/nrw/commons/auth/LoginActivity.java | 3 +- .../contributions/ContributionsActivity.java | 5 --- .../nrw/commons/nearby/NearbyActivity.java | 5 --- .../commons/settings/SettingsActivity.java | 5 --- .../commons/theme/NavigationBaseActivity.java | 31 +++++++++---------- 6 files changed, 17 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/AboutActivity.java b/app/src/main/java/fr/free/nrw/commons/AboutActivity.java index 96c1cf200..06d02aab2 100644 --- a/app/src/main/java/fr/free/nrw/commons/AboutActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/AboutActivity.java @@ -27,9 +27,4 @@ public class AboutActivity extends NavigationBaseActivity { versionText.setText(BuildConfig.VERSION_NAME); initDrawer(); } - - public static void startYourself(Context context) { - Intent settingsIntent = new Intent(context, AboutActivity.class); - context.startActivity(settingsIntent); - } } \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java index 9e3423928..f581de832 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java @@ -30,6 +30,7 @@ import fr.free.nrw.commons.R; import fr.free.nrw.commons.Utils; import fr.free.nrw.commons.WelcomeActivity; import fr.free.nrw.commons.contributions.ContributionsActivity; +import fr.free.nrw.commons.theme.NavigationBaseActivity; import timber.log.Timber; import static android.view.KeyEvent.KEYCODE_ENTER; @@ -176,7 +177,7 @@ public class LoginActivity extends AccountAuthenticatorActivity { } public void startMainActivity() { - ContributionsActivity.startYourself(this); + NavigationBaseActivity.startActivityWithFlags(this, ContributionsActivity.class, Intent.FLAG_ACTIVITY_CLEAR_TOP); finish(); } diff --git a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsActivity.java b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsActivity.java index 330baaf58..e429f32b4 100644 --- a/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/contributions/ContributionsActivity.java @@ -343,9 +343,4 @@ public class ContributionsActivity extends AuthenticatedActivity public void refreshSource() { getSupportLoaderManager().restartLoader(0, null, this); } - - public static void startYourself(Context context) { - context.startActivity(new Intent(context, ContributionsActivity.class)); - } - } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java index 94b6b5f19..7a1588d06 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyActivity.java @@ -350,9 +350,4 @@ public class NearbyActivity extends NavigationBaseActivity { fragmentTransaction.replace(R.id.container, fragment); fragmentTransaction.commitAllowingStateLoss(); } - - public static void startYourself(Context context) { - Intent settingsIntent = new Intent(context, NearbyActivity.class); - context.startActivity(settingsIntent); - } } diff --git a/app/src/main/java/fr/free/nrw/commons/settings/SettingsActivity.java b/app/src/main/java/fr/free/nrw/commons/settings/SettingsActivity.java index 5814ec904..4b46ff401 100644 --- a/app/src/main/java/fr/free/nrw/commons/settings/SettingsActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/settings/SettingsActivity.java @@ -54,9 +54,4 @@ public class SettingsActivity extends NavigationBaseActivity { return super.onOptionsItemSelected(item); } } - - public static void startYourself(Context context) { - Intent settingsIntent = new Intent(context, SettingsActivity.class); - context.startActivity(settingsIntent); - } } \ No newline at end of file diff --git a/app/src/main/java/fr/free/nrw/commons/theme/NavigationBaseActivity.java b/app/src/main/java/fr/free/nrw/commons/theme/NavigationBaseActivity.java index 7ad13b29e..c27182f67 100644 --- a/app/src/main/java/fr/free/nrw/commons/theme/NavigationBaseActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/theme/NavigationBaseActivity.java @@ -3,6 +3,7 @@ package fr.free.nrw.commons.theme; import android.accounts.Account; import android.accounts.AccountManager; import android.content.ActivityNotFoundException; +import android.content.Context; import android.content.Intent; import android.support.annotation.NonNull; import android.support.design.widget.NavigationView; @@ -95,31 +96,21 @@ public abstract class NavigationBaseActivity extends BaseActivity switch (itemId) { case R.id.action_home: drawerLayout.closeDrawer(navigationView); - if (!(this instanceof ContributionsActivity)) { - ContributionsActivity.startYourself(this); - this.finish(); - } + startActivityWithFlags( + this, ContributionsActivity.class, Intent.FLAG_ACTIVITY_CLEAR_TOP, + Intent.FLAG_ACTIVITY_SINGLE_TOP); return true; case R.id.action_nearby: drawerLayout.closeDrawer(navigationView); - if (!(this instanceof NearbyActivity)) { - NearbyActivity.startYourself(this); - this.finish(); - } + startActivityWithFlags(this, NearbyActivity.class, Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); return true; case R.id.action_about: drawerLayout.closeDrawer(navigationView); - if (!(this instanceof AboutActivity)) { - AboutActivity.startYourself(this); - this.finish(); - } + startActivityWithFlags(this, AboutActivity.class, Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); return true; case R.id.action_settings: drawerLayout.closeDrawer(navigationView); - if (!(this instanceof SettingsActivity)) { - SettingsActivity.startYourself(this); - this.finish(); - } + startActivityWithFlags(this, SettingsActivity.class, Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); return true; case R.id.action_introduction: drawerLayout.closeDrawer(navigationView); @@ -170,4 +161,12 @@ public abstract class NavigationBaseActivity extends BaseActivity finish(); } } + + public static void startActivityWithFlags(Context context, Class cls, int... flags) { + Intent intent = new Intent(context, cls); + for (int flag: flags) { + intent.addFlags(flag); + } + context.startActivity(intent); + } }