Finish activity from another activity

activity-finish, android, android-activity

Solution

In your `onCreate()` method assign a static instance to a variable to create a Singleton:

public static ActivityA instance = null;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    instance = this;
}

@Override
public void finish() {
    super.finish();
    instance = null;
}

then in C:

public void onCreate(Bundle savedInstanceState) {
    if(ActivityA.instance != null) {
        try {  
            ActivityA.instance.finish(); 
        } catch (Exception e) {}
    }
}

(Repeat above code for B as well as A)

I would say this is NOT elegant and is bound to introduce strange lifecycle bugs.

It would be better if you could tweak your requirement - if you can't you could perhaps use a single Activity and change A, B and C into `Fragments`?

I would have suggested a Broadcast but as I understand it you can't have instance level broadcast receivers on "non resumed" Activities.

Using a `Service` to bind to the Activities seems like overkill - but you might want to consider that if the above doesn't work.

Good luck!

Problem

I have 3 activities A, B and C. A leads to B which leads to C. I would like to be able to move back and forth between A and B but I want to finish both A and B once C gets started. I understand how to close B when starting C via the intent but how do I also close A when C gets started?

Original source

Related problems