【发布时间】:2010-04-27 00:29:37
【问题描述】:
当我在我的应用程序中按下一个按钮时,我需要返回到上一个活动。
有什么想法吗?
【问题讨论】:
当我在我的应用程序中按下一个按钮时,我需要返回到上一个活动。
有什么想法吗?
【问题讨论】:
从您要结束的活动中调用 finish() 应该会处理好这个问题。
多年后编辑:这仍然有效,但它有点过于严厉了。当我最初发布此内容时,Fragments 并不存在,并且(正如几位评论者所指出的)当涉及Fragments 时,这并不完全一样。如果您使用Fragments.
【讨论】:
仅作记录:在某些情况下,所描述的方法与后退按钮的作用不同,但您可以调用
this.onBackPressed();
或
getActivity().onBackPressed();
如果你在一个片段中实现完全相同的行为。
【讨论】:
使用片段时:
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();
}
}
例如,可以调用此代码来实现取消按钮。
if (theButton.getId() == R.id.btnStatusCancel) {
StaticMethods.fragmentImplementCancel(this);
}
【讨论】:
您可以在按下返回按钮时欺骗向上按钮调用:
@Override
public void onBackPressed() {
onNavigateUp();
}
【讨论】: