Finish an activity from another activity
android, android-activity, android-intent
Solution
Make your activity A in manifest file: `launchMode = "singleInstance"`
When the user clicks new, do `FirstActivity.fa.finish();` and call the new Intent.
When the user clicks modify, call the new Intent or simply finish activity B.
FIRST WAY
In your first activity, declare one `Activity object` like this,
public static Activity fa;
onCreate()
{
fa = this;
}
now use that object in another `Activity` to finish first-activity like this,
onCreate()
{
FirstActivity.fa.finish();
}
SECOND WAY
While calling your activity `FirstActivity` which you want to finish as soon as you move on, You can add flag while calling `FirstActivity`
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
But using this flag the activity will get finished evenif you want it not to. and sometime `onBack` if you want to show the `FirstActivity` you will have to call it using intent.
Problem
I want to finish one activity from another activity, like: In Activity [A], on button click, I am calling Activity [B] without finishing Activity [A]. Now in Activity [B], there are two buttons, New and Modify. When the user clicks on modify then pop an activity [A] from the stack with all the options ticked.. But when the user click on New button from Activity [B], then I will have to finish Activity [A] from the stack and reload that Activity [A] again into the stack. I am trying it, but I am not able to finish Activity [A] from the stack... How can I do it? I am using the code as: From Activity [A]: ``` Intent GotoB = new Intent(A.this,B.class); startActivityForResult(GotoB,1); ``` Another method in same activity ``` public void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == 1) { if (resultCode == 1) { Intent i = getIntent(); overridePendingTransition(0, 0); i.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); finish(); overridePendingTransition(0, 0); startActivity(i); } } } ``` And in Activity [B], on button click: ``` setResult(1); finish(); ```