77

当我在我的应用程序中按下一个按钮时,我需要返回到最后一个活动。

有任何想法吗?

4

5 回答 5

97

从您要结束的活动中调用finish()应该解决这个问题。

多年后编辑:这仍然有效,但它有点笨拙。当我最初发布此内容时,它Fragments并不存在,并且(正如几位评论者指出的那样)当涉及到时,它的工作方式并不完全相同Fragments。如果您正在使用,现在有更好的方法Fragments.

于 2010-04-27T00:33:58.843 回答
82

仅作记录:在某些情况下,所描述的方法与后退按钮的作用不同,但您可以调用

this.onBackPressed();

或者

getActivity().onBackPressed();

如果你在一个片段中实现完全相同的行为。

于 2014-04-15T12:33:35.980 回答
40

使用片段时:

getFragmentManager().popBackStack();

或者

getSupportFragmentManager().popBackStack();

如果您使用的是 android.support.v4.app 包

于 2013-05-09T19:07:07.450 回答
2

这是针对同一片段有时可能是活动中的唯一片段,有时是多片段活动的一部分的情况,例如在同时可见两个片段的平板电脑上。

/**
 * 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();
    }
}

例如,可以调用此代码来实现取消按钮。

    if (theButton.getId() == R.id.btnStatusCancel) {
        StaticMethods.fragmentImplementCancel(this);
    }
于 2014-02-03T11:23:55.280 回答
-1

您可以在按下后退按钮时欺骗向上按钮调用:

@Override
public void onBackPressed() {
    onNavigateUp();
}
于 2014-11-23T19:48:29.230 回答