2011-04-26 205 views
7

可能重複:
Removing an activity from the history stack刪除歷史 「開始」 -activity

我要尋找一個解決方案,從歷史堆棧中刪除StartActivity。 StartActivity是一開始就開始的。我正在使用這個類來檢查一些用戶值,並且如果所有的都是正確的,我們想把用戶重定向到MainActivity。

我試圖設置一個標誌:

addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

但這並不做自己應該。

App starts -> StartActivity -> MainActivity -> PRESS back -> the app should end 

它:

App starts -> StartActivity -> MainActivity -> PRESS back -> StartActivity 

感謝您的幫助!

編輯:這是我使用,開始在MainActivity代碼:

Intent i = new Intent(context, DashBoardActivity.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 
+0

請問您可以發佈您的代碼來切換活動嗎? – anticafe 2011-04-26 13:22:40

回答

7

開始StartActivity達成上述行爲時,應使用FLAG_ACTIVITY_NO_HISTORY

如果您在AndroidManifest.xml中將noHistory屬性設置爲true,則可能會達到相同效果。

+0

注意:如果您嘗試使用Facebook等登錄提供程序(啓動它自己的活動,然後將您返回到開始活動之後),則此方法不起作用 – handler 2015-01-18 00:50:27

+0

這就是我的情況,任何提示如何處理? – serj 2015-04-30 10:19:49

12

在啓動MainActivity後,您可以簡單地撥打finish()

Intent i = new Intent(context, DashBoardActivity.class); 
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(i); 
finish(); 
+0

當然這種方法也適用,但是當他提到從歷史中刪除時,我首先想到了國旗。 – Zelimir 2011-04-26 13:53:21

+0

是的,您的解決方案可能是將其歸檔的正確方法。我的一個更快更骯髒。 ;) – Flo 2011-04-26 13:55:33

+0

謝謝,你的解決方案工作。但另一個解決方案@Zelimir似乎更優雅。 – Mark 2011-04-26 13:55:33