如何控制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