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
This commit is contained in:
Ram Gudivada 2017-11-20 21:37:10 -08:00
parent 03517de9a3
commit 3c9b325e58
6 changed files with 17 additions and 37 deletions

View file

@ -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);
}
}

View file

@ -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();
}

View file

@ -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));
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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 <T> void startActivityWithFlags(Context context, Class<T> cls, int... flags) {
Intent intent = new Intent(context, cls);
for (int flag: flags) {
intent.addFlags(flag);
}
context.startActivity(intent);
}
}