2012-03-30 53 views
0

我有我的活動如下設置:結算活動堆棧不工作

A(noHistory) - 「乙 - 」ç - > d - >電子

所以,當我開始activity Eactivity 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從後退堆棧中刪除,如果我按下後退按鈕,CB仍然存在。

因此,我想在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); 

+0

你想從E回到A嗎? – Rasel 2012-03-30 09:12:41

+0

檢查下面的鏈接,一個類似的問題。它可能會幫助你。 [如何清除Android Stack的活動?](http://stackoverflow.com/questions/4190429/how-to-clear-the-android-stack-of-activities) – 2012-03-30 09:18:33

+0

@Rasel不,我想當我從E – 2012-03-30 09:59:39

回答

0

最後我只是做了作爲RASEL建議(在評論我的問題) 當在活動B,C,D上輸入活動E i完成時,將它們從堆棧中取出。

0

在你的代碼只需更換以下行

explicitIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

試試這個代碼。

+0

也沒有工作(我猜是因爲活動E尚未運行) – 2012-03-30 10:13:43

1

啓動活動,這樣的..

這活動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(); 

     } 
    } 
+0

你試過這個...這一個工程.. – 5hssba 2012-03-30 10:58:40