david
david

Reputation: 2142

Android - Simulate Back Button

When i press a button in my app, I need to return to the last activity.

Any ideas?

Upvotes: 78

Views: 46356

Answers (6)

Mirza Hadzic
Mirza Hadzic

Reputation: 11

If you want to invoke back button press programmatically, new way of doing this (calling onBackPressed() is deprecated) is:

    getOnBackPressedDispatcher().onBackPressed();

Upvotes: 1

Chris Thompson
Chris Thompson

Reputation: 35598

Calling finish() from the activity you want to end should take care of this.

Edit many years later: This still works, but it's a bit of a heavy-handed approach. When I originally posted this, Fragments didn't exist, and (as several commenters have pointed out) this doesn't work quite the same way when there are Fragments involved. There are better approaches now if you're using Fragments.

Upvotes: 99

shanik
shanik

Reputation: 9

You can spoof a up button call on back button press:

@Override
public void onBackPressed() {
    onNavigateUp();
}

Upvotes: -1

黄雨伞
黄雨伞

Reputation: 1974

Just for record: The described method doesn't do the same as the back button does in some cases, but you can call

this.onBackPressed();

or

getActivity().onBackPressed();

if you are in a fragment to achieve exaclty the same behaviour.

Upvotes: 86

RenniePet
RenniePet

Reputation: 11658

This is for a situation where the same fragment may sometimes be the only fragment in an activity, and sometimes part of a multi-fragment activity, for example on a tablet where two fragments are visible at the same time.

/**
 * Method that can be used by a fragment that has been started by MainFragment to terminate
 * itself. There is some controversy as to whether a fragment should remove itself from the back
 * stack, or if that is a violation of the Android design specs for fragments. See here:
 * http://stackoverflow.com/questions/5901298/how-to-get-a-fragment-to-remove-itself-i-e-its-equivalent-of-finish
 */
public static void fragmentImplementCancel(Fragment fragment) {

    FragmentActivity fragmentActivity = fragment.getActivity();
    FragmentManager fragmentManager = fragmentActivity.getSupportFragmentManager();

    if (fragmentManager.getBackStackEntryCount() == 1) {
        fragmentManager.popBackStack();
    }
    else {
        fragmentActivity.finish();
    }
}

This code can be called to implement a Cancel button, for example.

    if (theButton.getId() == R.id.btnStatusCancel) {
        StaticMethods.fragmentImplementCancel(this);
    }

Upvotes: 2

zajac.m2
zajac.m2

Reputation: 1238

when using fragments:

getFragmentManager().popBackStack();

or

getSupportFragmentManager().popBackStack();

if you are using android.support.v4.app package

Upvotes: 43

Related Questions