如何控制Android后台堆栈

时间:2013-01-03 16:26:34

标签: android android-activity stack back activity-stack

让我说我有

A-> B-> C-> D-&GT,E

在android后台堆栈中。我希望能够回到以下其中一个:

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

我怎样才能做到这一点?希望不会强制退回按钮。

3 个答案:

答案 0 :(得分:7)

使用FLAG_ACTIVITY_CLEAR_TOP标志。

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

答案 1 :(得分:3)

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

/** 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及更高版本),请使用“parentActivityName”属性。

答案 2 :(得分:0)

假设您正在使用Intent移动到另一个活动

Intent i = new Intent(A.this,B.class);
startActivity(i);

此代码将带您进入&#39; B&#39;活动,当您按“返回”按钮时,它将再次转到“A&#39; A&#39;活动。如果你不想回去参加活动&#39; A&#39;你可以用....

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的更多信息,请访问以下链接: http://developer.android.com/guide/components/tasks-and-back-stack.html