[英]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
從后退堆棧中刪除,如果我按下后退按鈕, C
和B
仍在那里。
因此,要在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.