结算活动堆栈不工作
我有我的活动如下设置:结算活动堆栈不工作
A(noHistory) - “乙 - ”ç - > d - >电子
所以,当我开始activity E
从activity D
我希望E
成为根活动并清除后面堆栈的其余部分。
我也跟着在这里很多帖子中提到的解决方案,它是下列标志添加到我的意图:
final Intent explicitIntent = new Intent(this,
E.class);
explicitIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
explicitIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(explicitIntent);
然而,Activity E
(这是以前没有运行)不会成为回堆栈的根。相反,只有Activity D
从后退堆栈中删除,如果我按下后退按钮,C
和B
仍然存在。
因此,我想在SDK < 11中实现真正不可能的功能,如下所述:Clear the entire history stack and start a new activity on Android?这些线
explicitIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
explicitIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
:
最后我只是做了作为RASEL建议(在评论我的问题) 当在活动B,C,D上输入活动E i完成时,将它们从堆栈中取出。
在你的代码只需更换以下行
explicitIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
试试这个代码。
也没有工作(我猜是因为活动E尚未运行) – 2012-03-30 10:13:43
启动活动,这样的..
这活动B
int k=1;
Intent i=new Intent(B.this,C.class);
startActivityForResult(i,k);
这活动Ç
int j=1;
Intent i=new Intent(C.this,D.class);
startActivity(i,j);
这活动d
int j=1;
Intent i=new Intent(D.this,E.class);
startActivityForResult(i,j);
setResult(RESULT_OK, null);
finish();
并把这个活动Ç
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode ==1) {
if (resultCode == RESULT_OK) {
setResult(RESULT_OK, null);
finish();
}
}
这活动B
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode ==1) {
if (resultCode == RESULT_OK) {
setResult(RESULT_OK, null);
finish();
}
}
你试过这个...这一个工程.. – 5hssba 2012-03-30 10:58:40
你想从E回到A吗? – Rasel 2012-03-30 09:12:41
检查下面的链接,一个类似的问题。它可能会帮助你。 [如何清除Android Stack的活动?](http://*.com/questions/4190429/how-to-clear-the-android-stack-of-activities) – 2012-03-30 09:18:33
@Rasel不,我想当我从E – 2012-03-30 09:59:39