2015-12-30 65 views

回答

7
Intent intent = new Intent(ActivityC.this, ActivityD.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(intent); 
ActivityC.this.finish(); 

FLAG_ACTIVITY_NEW_TASK

如果設置,這個活動將成爲一個新任務的開始在這個 歷史堆棧上。任務(從開始它到下一個 任務活動的活動)定義用戶可以移動到的活動的原子組。任務可以移動到前臺和後臺;所有 特定任務內部的活動始終保持相同的 順序。有關任務的更多信息,請參閱任務和返回堆棧。

這個標誌是普遍使用的是要呈現 「發射」式的行爲活動:它們給用戶的單獨 事情是可以做的,否則運行完全獨立 活動推出它們的列表。

使用此標誌時,如果任務已在運行 您現在正在啓動,則不會啓動新的活動; 取而代之的是,當前任務將被簡單地置於 屏幕的前端並顯示其狀態。請參閱FLAG_ACTIVITY_MULTIPLE_TASK 以獲取禁用此行爲的標誌。

當調用者請求從 開始的活動的結果時,不能使用此標誌。

FLAG_ACTIVITY_CLEAR_TASK

如果傳遞給Context.startActivity()的意圖設置,這個標誌將 導致將與該活動相關聯,以 活動前被清除任何現有任務開始。也就是說,活動 成爲其他空任務的新根,並且任何舊的活動都已完成。這隻能與 FLAG_ACTIVITY_NEW_TASK結合使用。

2

你需要傳遞標誌Intent.FLAG_ACTIVITY_CLEAR_TOPIntent

Intent intent = new Intent(getApplicationContext(), D.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent); 
+0

當我已經在活動C我調用了代碼'Intent intent = new Intent(getApplicationContext(),D.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);'但是當我點擊後退按鈕。我仍然回到'活動C'。謝謝你的回答,雖然 – JayVDiyk

+0

是的你可以去活動C,但你的活動A,B將完成 – Pitty

+0

使用:Activity_C activity = new Activity_C(); activity.finish();在你的Activity D OnCreate()方法中 – Pitty

1

使用這些線路以清除活動堆棧當活動C被推出:

Intent i = new Intent(PresentActivityName.this, D.class); 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
    startActivity(i); 
    finish(); 
相關問題