-1

I have a multiple activities in my application. Two of them are a LoginActivity and the second one is a SettingsActivity. The user logs into the Settings activity and logs out of the application from the SettingsActivity. The flow of the application is LoginActivity -> HomeActivity -> SettingsActivity . The user calls the logout from the application in the Settings Activity. I call finish on the Settings activity and create an intent to the LoginActivity. This works fine, but when i press the back on the loginactivity the home activity appears. I want that once the LoginActivity appears the back button should take the application out of the application. How can i do this ?

AndroidDev
  • 15,993
  • 29
  • 85
  • 119

3 Answers3

1

The answer lies in FLAG_ACTIVITY_CLEAR_TOP. All you need to do is set the flag to your intent like shown below

Intent i = new Intent(this, LoginActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
finish();

That should pretty much do what you want it to do.

Avinash
  • 174
  • 1
  • 1
  • 8
1

I believe this is what you are looking for:

How to clear the Android Stack of activities?

I wouldnt get too hung up on the fact that it doesnt actually finish() your LoginActivity - this is actually a pretty normal pattern to follow.

Community
  • 1
  • 1
Nick
  • 8,181
  • 4
  • 38
  • 63
1

I had to use .FLAG_ACTIVITY_CLEAR_TASK for this to work . I read this is supported after API version 11, will these do for all previous versions. Secondly how can i use these from the Manifest file and not the java code ? intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);

AndroidDev
  • 15,993
  • 29
  • 85
  • 119