如何控制Android反向堆栈

可以说我有

A-> B-> C-> D->电子

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

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

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


使用来自Android任务和后退堆栈的官方开发人员页面的图像和信息,您可以看到启动Activity的所有其他方式,只有在Intent标志中使用FLAG_ACTIVITY_CLEAR_TOP才能确保这种行为。

您的常规后退按钮为:

在这里输入图像描述

但是当你指定这个标志时,你会得到一个你需要的行为,就像这个源代码中的一个例子给出的那样:

考虑一个由以下活动组成的任务:A,B,C,D。如果D调用startActivity()和一个Intent解析活动B的组件,那么C和D将完成,B收到给定的Intent,堆栈现在是:A,B。


使用FLAG_ACTIVITY_CLEAR_TOP标志。

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

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

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

为了使用它,你必须在manifest上设置这个函数应该使用的活动(或者你可以通过改变代码来自己设置它):

如果您使用actionBarSherlock,那么对于您希望增加的每个活动,请使用:

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

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

链接地址: http://www.djcxy.com/p/88703.html

上一篇: How to Control Android back stack

下一篇: PHP Google App Engine can't open