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 ?
Asked
Active
Viewed 954 times
3 Answers
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.
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