2012-03-31 73 views
0

我有一個問題,因爲我使用startActivity功能去了不同的活動,他們總是從頭開始創建。即使之前訪問過活動A,但當我再次進入活動B並再次訪問A時,活動A又被創建。Android如何創建僅當它尚未創建的活動

問題是後退按鈕,導致如果我去活動A然後B然後A然後B 爲了關閉應用程序我必須按回來按鈕4次。 我想它不應該像這樣,用戶應該能夠在第一次按下按鈕時進入活動A,第二次按下應關閉應用程序。

如何解決這個問題? 問候

回答

0

我嘗試提出解決方案,到目前爲止,但他們並沒有爲我做的。 然而,在啓動活動時,使用標記FLAG_ACTIVITY_CLEAR_TOP

感謝您指點我在正確的方向。

0

確保您實施了onSaveInstanceState並準備從的onCreate恢復您的活動。這就是當你重返活動時你如何重新建立自己的位置。

0

在清單

+0

這根本不是正確的解決方案。除非您有非常不尋常的應用程序,否則更改launchMode是個壞主意。 – 2012-03-31 13:12:36

0

您需要設置FLAG_ACTIVITY_SINGLE_TOP到你的意圖的發射活動答:這樣做會導致先前創建活動再使用添加launcheMode =「singleTask」你的活動。確保你在onNewIntent方法中處理你的事後意圖。 For more info

+0

這對海報的情況沒有幫助。他說他從活動A到活動B再到活動A.在這種情況下,當從活動B啓動活動A時:即使活動A是以「FLAG_ACTIVITY_SINGLE_TOP」啓動的,它仍然會創建活動A的新實例,因爲活動A不在活動堆棧的頂部。 – 2012-03-31 13:09:06

1

如果您有活動的轉換,如:

活動A - >活動B 活動B - >活動A

,並且希望用戶能夠返回到活動A的同一實例在這種情況下, ,也許你只需要在爲Activity A調用startActivity()之後調用Activity B中的finish()?

如果這沒有幫助,請給我們更多關於你想要做什麼的信息。

0

您需要設置標誌FLAG_ACTIVITY_REORDER_TO_FRONT當你開始從B或反之亦然活性的,像

i = new Intent("....ActivityAorB"); 
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivity(i);