Android - 模拟后退按钮

时间:2010-04-27 00:29:37

标签: android button back

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

有什么想法吗?

5 个答案:

答案 0 :(得分:92)

从您想要结束的活动中调用finish()应该注意这一点。

多年后编辑:这仍然有效,但这有点像一个严厉的方法。当我最初发布这个时,Fragments不存在,并且(正如几个评论者所指出的那样)当涉及Fragments时,这种方法的工作方式不同。如果您使用Fragments.

,现在有更好的方法

答案 1 :(得分:64)

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

this.onBackPressed();

getActivity().onBackPressed();

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

答案 2 :(得分:36)

使用片段时:

getFragmentManager().popBackStack();

getSupportFragmentManager().popBackStack();

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:-1)

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

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