In Android I have some activities, let's say A, B, C.
In A, I use this code to open B:
Intent intent = new Intent(this, B.class); startActivity(intent);
In B, I use this code to open C:
Intent intent = new Intent(this, C.class); startActivity(intent);
When the user taps a button in C, I want to go back to A and clear the back stack (close both B and C). So when the user use the back button B and C will not show up, I've been trying the following:
Intent intent = new Intent(this, A.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);
But B and C are still showing up if I use the back button when I'm back in activity A. How can I avoid this?
A task is a collection of activities that users interact with when trying to do something in your app. These activities are arranged in a stack—the back stack—in the order in which each activity is opened. For example, an email app might have one activity to show a list of new messages.
On Clicking the back button from the New Activity, the finish() method is called and the activity destroys and returns to the home screen.
Try adding FLAG_ACTIVITY_NEW_TASK
as described in the docs for FLAG_ACTIVITY_CLEAR_TOP
:
This launch mode can also be used to good effect in conjunction with FLAG_ACTIVITY_NEW_TASK: if used to start the root activity of a task, it will bring any currently running instance of that task to the foreground, and then clear it to its root state. This is especially useful, for example, when launching an activity from the notification manager.
So your code to launch A
would be:
Intent intent = new Intent(this, A.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); CurrentActivity.this.finish(); // if the activity running has it's own context // view.getContext().finish() for fragments etc.
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With