Android - 模拟后退按钮

问题描述 投票:0回答:6

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

有什么想法吗?

android button back
6个回答
99
投票

从您想要结束的活动中调用

finish()
即可解决此问题。

多年后编辑:这仍然有效,但有点严厉。当我最初发布此内容时,

Fragments
不存在,并且(正如一些评论者指出的那样)当涉及
Fragments
时,它的工作方式并不完全相同。如果您正在使用
Fragments.

,现在有更好的方法

86
投票

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

this.onBackPressed();

getActivity().onBackPressed();

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


43
投票

使用片段时:

getFragmentManager().popBackStack();

getSupportFragmentManager().popBackStack();

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


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

0
投票

如果您想以编程方式调用后退按钮按下,执行此操作的新方法(不推荐调用 onBackPressed())是:

    getOnBackPressedDispatcher().onBackPressed();

-1
投票

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

@Override
public void onBackPressed() {
    onNavigateUp();
}
© www.soinside.com 2019 - 2024. All rights reserved.