From 2c1f20f1fd7488382ef443b0171644c35daa85bd Mon Sep 17 00:00:00 2001 From: Ram Gudivada Date: Sat, 11 Nov 2017 00:43:37 -0800 Subject: [PATCH] Issue-944: Fix for same activity getting instantiated multiple times This is happening because the finish() method on current activity is not called before switching to the new activity --- .../commons/theme/NavigationBaseActivity.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) 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 e1a6c5905..dd0269f1c 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 @@ -91,35 +91,36 @@ public abstract class NavigationBaseActivity extends BaseActivity @Override public boolean onNavigationItemSelected(@NonNull final MenuItem item) { - switch (item.getItemId()) { + final int itemId = item.getItemId(); + switch (itemId) { case R.id.action_home: drawerLayout.closeDrawer(navigationView); if (!(this instanceof ContributionsActivity)) { ContributionsActivity.startYourself(this); } - return true; + break; case R.id.action_nearby: drawerLayout.closeDrawer(navigationView); if (!(this instanceof NearbyActivity)) { NearbyActivity.startYourself(this); } - return true; + break; case R.id.action_about: drawerLayout.closeDrawer(navigationView); if (!(this instanceof AboutActivity)) { AboutActivity.startYourself(this); } - return true; + break; case R.id.action_settings: drawerLayout.closeDrawer(navigationView); if (!(this instanceof SettingsActivity)) { SettingsActivity.startYourself(this); } - return true; + break; case R.id.action_introduction: drawerLayout.closeDrawer(navigationView); WelcomeActivity.startYourself(this); - return true; + break; case R.id.action_feedback: drawerLayout.closeDrawer(navigationView); Intent feedbackIntent = new Intent(Intent.ACTION_SEND); @@ -134,7 +135,7 @@ public abstract class NavigationBaseActivity extends BaseActivity } catch (ActivityNotFoundException e) { Toast.makeText(this, R.string.no_email_client, Toast.LENGTH_SHORT).show(); } - return true; + break; case R.id.action_logout: new AlertDialog.Builder(this) .setMessage(R.string.logout_verification) @@ -146,10 +147,13 @@ public abstract class NavigationBaseActivity extends BaseActivity }) .setNegativeButton(R.string.no, (dialog, which) -> dialog.cancel()) .show(); - return true; + break; default: + Timber.e("Unknown option [%s] selected from the navigation menu", itemId); return false; } + this.finish(); + return true; } private class BaseLogoutListener implements CommonsApplication.LogoutListener {