2013-06-04 34 views
0

我有一個活動A顯示不同的屏幕。我選擇使用setContentView在同一活動中顯示多個視圖。即使沒有人叫它活動重新創建活動

當您啓動應用程序時,活動A顯示默認屏幕。然後選擇一個選項,並通過將setContentView設置爲另一個視圖來顯示另一組選項。這種新的觀點,現在把你帶到一個新的活動(活動B)當你點擊它,並且活動A調用finish()

如果我現在結束活動B,通過調用它finish(),我被帶回到活動A,它稱之爲onCreate()。我無法弄清楚這裏有什麼問題。爲什麼當活動B從未爲活動A調用意圖時活動會重新創建?

view.findViewById(R.id.quit).setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     finish(); 
    } 
}); 
+0

活動A如何將您帶到活動B?是通過調用'startActivityForResult()?'還是'startActivity()'? –

+0

@DanielGabriel'startActivity()' – Amit

+0

你確定你沒有從B開始活動A? :P我不能想象如果你告訴我們的是正確的,活動A如何創建。 – Carnal

回答

0

的問題是最有可能的,因爲onCreate()的目的是創建活動的狀態,因爲它是它離開的時候。任何情況下都不能假定一旦用戶離開它,Activity將保持其狀態。視圖是內存密集型的,只要系統需要更多內存用於當前頂級活動,系統就會轉儲它。如果發生這種情況,那麼在系統轉儲它之前,系統必須重新創建Activity到其原始狀態。

您可以通過onSaveInstanceState(Bundle)方法保存狀態。傳遞到onCreate的包與您在onSaveInstanceState()中設置的包相同,因此所有參數都將在那裏。然後,您可以重建原樣。