Android-模拟后退按钮

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

有什么想法吗?

43817 次浏览

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

多年后再编辑: 这仍然可以工作,但是这是一个有点粗暴的方法。当我最初发布这篇文章的时候,Fragments并不存在,而且(正如一些评论者所指出的)当涉及到 Fragments的时候,它的工作方式并不完全相同。如果使用 Fragments.,现在有更好的方法

使用片段时:

getFragmentManager().popBackStack();

或者

getSupportFragmentManager().popBackStack();

如果您正在使用 android.Support.v4.app 包

这是一种情况下,相同的片段有时可能是活动中的唯一片段,有时是多片段活动的一部分,例如在片剂上可以同时看到两个片段。

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

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

this.onBackPressed();

or

getActivity().onBackPressed();

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

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

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