Android:删除backstack中的活动

vic*_*cky 2 android

我有4个活动让它为A-> B-> C-> D.在每个A,B,C活动用户需要输入数据所有数据都会在C活动中发送到服务器如果用户数据正确他会移动从D活动和从堆栈中删除的所有活动A,B,C.如果数据正确我需要让用户重新输入数据,即在背面按下它必须移动C-> B-> A.我的问题是当用户输入D活动时如何删除A,B,C活动.

Avi*_*nku 5

使用FLAG_ACTIVITY_CLEAR_TOP这将解决您的问题

http://developer.android.com/reference/android/content/Intent.html

如果已设置,并且正在启动的活动已在当前任务中运行,则不会启动该活动的新实例,而是将关闭其上的所有其他活动,并将此Intent传递给(现在开启) top)旧活动作为新的意图.

例如,考虑一个由活动组成的任务:A,B,C,D.如果D调用带有解析为活动B组件的Intent的startActivity(),则C和D将完成,B接收给定的Intent ,导致堆栈现在是:A,B.

用它就像

Intent intent = new Intent(getApplicationContext(),
        yourActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

另外,看看这个问题:

标志FLAG_ACTIVITY_CLEAR_TOP的活动(android)

编辑:我以为你想从D转移到你的家庭活动,并希望从堆栈中删除所有活动

你的堆栈就像家庭活动,A,B,C,D所以我给你这个解决方案,因为这将删除你家庭活动堆栈中的所有活动.但是你想在去D的时候抓住堆栈,你可以使用它

FLAG_ACTIVITY_TASK_ON_HOME

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_TASK_ON_HOME

或FLAG_ACTIVITY_CLEAR_TASK

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TASK

但这两个都是api 11级