如何控制Android后栈

如何控制Android后栈,android,android-activity,stack,back,activity-stack,Android,Android Activity,Stack,Back,Activity Stack,假设我有 A->B->C->D->E 在android后台堆栈中。我希望能够回到以下内容之一: A->B->C A->B A 我怎样才能做到这一点?希望不要强制单击后退按钮。使用标志\u活动\u清除\u顶部标志 Intent a = new Intent(this, A.class); a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(a); 使用Android官方开发者页面上的图像和信息,您可以看到,在所有

假设我有

A->B->C->D->E

在android后台堆栈中。我希望能够回到以下内容之一:

A->B->C
A->B
A

我怎样才能做到这一点?希望不要强制单击后退按钮。

使用
标志\u活动\u清除\u顶部
标志

Intent a = new Intent(this, A.class);
a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(a);

使用Android官方开发者页面上的图像和信息,您可以看到,在所有其他启动活动的方式中,您只能使用意图标志中的
标志\u Activity\u CLEAR\u TOP
来确保此类行为

您的常规后退按钮如下所示:

但当您指定此标志时,您将获得所需的行为,如下面的示例所示:

考虑一个由以下活动组成的任务:a、B、C、D startActivity()的目的是解析为 活动B,然后C和D将完成,B将收到给定的 意图,导致堆栈现在为:A,B

实际上,要“向上”进入您选择的活动,您应该使用操作栏上的“向上”导航:

/** used to handle the "up" button on the action bar, to go to the defined top activity as written on the manifest */
public static void goUpToTopActivity(final Activity currentActivity) {
    final Intent intent = NavUtils.getParentActivityIntent(currentActivity);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    NavUtils.navigateUpTo(currentActivity, intent);
}
为了使用它,您必须在清单上设置此函数应使用的活动(当然,您也可以通过更改代码自行设置):

如果您使用actionBarSherlock,对于您希望进行的每个活动,请使用:

<meta-data
    android:name="android.support.PARENT_ACTIVITY"
    android:value="com.your_app.activities.MainActivity" />


如果您使用android框架(如果您的minSdk版本为API 16及更高版本),请使用“”属性。

假设您正在使用Intent移动到其他活动

Intent i = new Intent(A.this,B.class);
startActivity(i);
此代码将带您进入“B”活动,当您按下“后退”按钮时,它将再次带您进入“A”活动。如果你不想回到活动“A”,你可以使用

Intent i = new Intent(A.this,B.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(i);
有关Android中Back Stack的更多信息,请点击以下链接:

这是一个正确的答案,为什么要投否决票?在B、C、D、E活动中,您可以向a启动一个新的意图,并使用CLEAR_TOP标志,如果该活动位于堆栈上,它将清除顶部的活动。我认为,虽然它适用于活动,但不适用于片段。因此,我必须通过意图显式调用所需的活动?即使它已经在堆栈中?问题是,在我的例子中,顶层活动只知道它应该后退多少步,而不知道谁坐在堆栈中。。我需要像“在堆栈中后退3步”这样的东西@Vlad查看我的答案和git项目以了解您的场景