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();
Start your activity with request code :
And you can close it from any other activity like this :
That you can do, but I think you should not break the normal flow of activity. If you want to finish you activity then you can simply send a broadcast from your activity B to activity A.
Create a broadcast receiver before starting your activity B:
Send broadcast from activity B to activity A when you want to finish activity A from B
I hope it will work for you...
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,now use that object in another
Activity
to finish first-activity like this,SECOND WAY
While calling your activity
FirstActivity
which you want to finish as soon as you move on, You can add flag while callingFirstActivity
But using this flag the activity will get finished evenif you want it not to. and sometime
onBack
if you want to show theFirstActivity
you will have to call it using intent.See my answer to Stack Overflow question Finish All previous activities.
What you need is to add the
Intent.FLAG_CLEAR_TOP
. This flag makes sure that all activities above the targeted activity in the stack are finished and that one is shown.Another thing that you need is the
SINGLE_TOP
flag. With this one you prevent Android from creating a new activity if there is one already created in the stack.Just be wary that if the activity was already created, the intent with these flags will be delivered in the method called
onNewIntent(intent)
(you need to overload it to handle it) in the target activity.Then in
onNewIntent
you have a method called restart or something that will callfinish()
and launch a new intent toward itself, or have arepopulate()
method that will set the new data. I prefer the second approach, it is less expensive and you can always extract theonCreate
logic into a separate method that you can call for populate.I've just applied Nepster's solution and works like a charm. There is a minor modification to run it from a Fragment.
To your Fragment
And to your OnNewIntent() of the Activity you would like to restart.
First call startactivity() than use finish()