2010-10-01 78 views
2

我有幾十個活動:1-主要,1-動畫,10-其他和它的更多活動的子集(幾十個)。Android:多個活動和OnDestroy問題

從Main中,您可以通過按鈕去任何其他

其他致電子集活動,他們稱之爲動畫活動。

每個活動(包括子集和動畫)都有一個返回到主活動的按鈕。

所有按鈕都會讓用戶更正活動。

問題:在主要活動中,我想通過使用設備的後退鍵退出。但是,會發生的是,它會在所有以前的活動中倒退。

「返回到主」按鈕(在每個活動)具有光潔度的onDestroy在它。所以,我不確定爲什麼這些屏幕/活動不會被破壞......?

任何的意見/建議/澄清表示讚賞 - 感謝

[添加代碼片段]

注:我移動/添加/刪除的結束,的onDestroy,...的onStop嘗試了很多方式,使顯示的內容在片段只有一個辦法我試過......

// --------------------------------------------------------- 
mainMenu.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     // do something 
     Intent Maincode = new Intent(); 
      Maincode.setClassName(
           "com.bt.test", 
           "com.bt.test.Maincode"); 
     // startActivity(Maincode); // go to maincode 
      finish(); 
      onStop(); 
     onDestroy(); 
     startActivity(Maincode); // go to maincode 
    } 
}); // end ----------------------------------------------- 

回答

3

你能張貼您的onClick處理程序返回主按鈕?

你應該做這樣的事情:

Intent i = new Intent(this, MainActivity.class); 
startActivity(i); 
finish(); 

編輯: 您也可以嘗試設置此標誌:

i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

這應該清除調用和接收活動,如果之間的活動棧接收活動已經在堆棧中。

+0

感謝任何活動 - 代碼添加 – headscratch 2010-10-01 19:36:12

+0

danh32:謝謝 - 設置標誌,似乎這樣做(不知道爲什麼完成...等等沒有工作,因爲它在我的其他代碼中工作,雖然他們沒有深入幾層。 – headscratch 2010-10-01 19:50:13

1

首先,你一般不應該自己調用onStoponDestroy(或者,對於這個問題,任何其他的Activity生命週期方法)。由於finish,Android會爲你做到這一點,如果你自己做,可能會感到困惑。

其次,您的「返回主」聽衆根本不應該調用任何startActivity。相反,如果您想清除活動堆棧,則應在該處撥打finish。如果您可能要離開main並且想要直接返回,您應該在啓動子活動時使用startActivityForResult,並在'main按鈕'上添加一個帶有真正標誌的結果Intent。然後,任何中間活動將被調用onActivityResult,如果他們看到該標誌,他們也可以立即finish,以便控制回到您的主要活動。

編輯:實際上,startActivityFLAG_ACTIVITY_CLEAR_TOP是一個更直接的方式來獲得相同的效果。堅持。

+0

Walter:謝謝 - 我同意我在某些情況下注意到應用程序混淆,但通常我需要調用它,因爲它會調用我的已定義的方法,其中包含釋放回調的東西...等等 – headscratch 2010-10-01 19:53:14

+0

headscratch:你爲什麼需要調用它?是不是知道它會在調用活動時被調用退出? – 2010-10-01 19:55:34

+0

Walter:在某些情況下,我必須(想要)殺死GPS,time-ba sed函數和其他一些沒有專門殺死它們的東西,它們仍然存在。使用onDestroy調用我的onDestroy方法(它也包含super.onDestroy)是每個android dev站點文檔的。 – headscratch 2010-10-01 20:00:23

0

完成不只是「完成」您的應用程序/活動,如文件的狀態時,你的活動完成,應關閉

「調用它。該ActivityResult傳播回誰通過onActivityResult您推出() 「。

換句話說,你的電話來完成將回傳播通過你以前一直在