2012-05-26 63 views
2

我有主要活動和更多的應用程序。 在彼此的活動有應用程序的標誌。 當用戶按下標誌按鈕時,我想回到主要活動。從活動堆棧中重新使用Android活動並清除它

我不想創建新的意圖,因爲活動堆棧上的活動已經結束。

我怎樣才能得到它 - 使用堆棧中的一個? 如何清除整個活動堆棧,所以後退按鈕實際上會退出應用程序而不是回到以前的活動?

Yoav

+0

您需要嘗試理解Android文檔中的Activity Activity LifeCycle並查看finish()函數。 –

回答

3

我不希望創建新的意圖,因爲AREADY上的活動堆棧活動。

如果您啓動了一個已經啓動且位於堆棧上的活動(即通過意圖或任何其他方式),那麼Android只會將該活動的相同實例放置在堆棧頂部。一個新的實例不會被創建。當然,如果你沒有手動殺死這個活動(通過調用finish()),就會發生這種情況。

如何清除整個活動堆棧,所以後退按鈕實際上會退出應用程序而不是回到以前的活動?

它不建議覆蓋後退按鈕退出每個活動中的應用程序(除非你的應用程序有強烈的理由這樣做)。通常應用程序應該讓用戶在按下後退按鈕時回到之前的活動狀態(這是用戶可能期望的)。
如果您仍想與返回鍵退出,那麼你可以重寫後退按鈕功能,啓動通向主屏幕的意圖:

Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
0

它非常簡單。 不要在主頁/主要活動中調用finish()。 例如:假設您有4項活動..如果您的要求是這樣的話。Act1 - > Act2 - > Act3 - > Act4 - > Act1。所以,不要在Act1上調用finish()。但是當您正在進行其他活動時,請在Act2 Act3上致電完成()。所以當你點擊Act4中的標誌時,只需調用finish()。所以,你會自動回到Act1這是你的主要活動。
如果您在Act2中有標識,則Act3也會在標識點擊後返回Main以調用finish()。但是記得在從Act2到Act3時調用Act2上的finish()