簡體   English   中英

清除活動堆棧不起作用

[英]Clearing activity stack is not working

我的活動有以下設置:

A(noHistory)-> B-> C-> D-> E

因此,當我從activity D開始activity E ,我希望E成為根活動並清除其余的后堆棧。

我遵循了此處許多帖子中提到的解決方案,該解決方案是將以下標志添加到我的Intent中:

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中實現我真正想要的是真的不可能的,如此處所述: 清除整個歷史記錄堆棧並在Android上啟動新活動

像這樣開始您的活動。

活動B

 int k=1;
        Intent i=new Intent(B.this,C.class);
        startActivityForResult(i,k);

活動C

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();

並把它放在活動C中

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();

      }
   }

在您的代碼中,只需替換以下行:

explicitIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
explicitIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

這些行:

explicitIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

試試這個代碼。

最后,我只是按照Rasel的建議做了(在對我的問題的評論中),當進入活動E時,我打電話給活動B,C,D結束以將其從堆棧中刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM