2011-04-12 200 views
3

我有兩個活動名爲主頁購物車。當我在活動首頁按下按鈕它去活動購物車Android活動生命週期問題

對於我用下面的代碼

public void onClick(View v) { 
    Intent intent = new Intent(this, Cart.class); 
    startActivity(intent); 
} 

活動當我按下一個按鈕,它涉及到的活動首頁

對於

public void onClick(View v) { 
    Intent intent = new Intent(this, Home.class); 
    startActivity(intent); 
} 

活動正在改變罰款,但onCreate方法調用每次活動開始時間。

這是一個很好的生命週期嗎?如果不是,我該如何解決這個問題?

+0

你還沒說什麼是你想要解決的問題。你試圖達到什麼樣的行爲? – 2011-04-12 10:42:13

回答

1

如何解決什麼?這是活動的預期行爲。不過,如果你不想在你onCreate方法的方法被稱爲做,你可以使用一個標誌是這樣的:

public class YourActivity extends Activity { 

    private boolean firstStart = true; 

    public void OnCreate(...) { 

     if (firstStart) { 
     //do your stuff here 
     firstStart = false; 
     } 

    } 
} 
1

考慮使用TabHost如果你有兩個活動同時運行。

0

不,我認爲在這種情況下循環是不正確的。

有了這個設計,你可能最終得到的活動棧不斷增長,如:首頁 - >產品 - >首頁 - >產品 - >首頁 - >購物 - >等...

按後退按鈕將循環返回此堆棧中的每個項目。

我不認爲這就是你想要的。如果用戶在家中,然後進入購物車,他可能會按Back返回主頁。現在堆棧只包含Home,再次按Back將退出,這聽起來正確。考慮到你展示的片段,我認爲當使用按下你在購物車中提到的按鈕時,應該發生完全相同的事情。

因此,您需要在購物車中調用finish()以返回主頁。您不應該依賴onSaveInstanceState()來恢復購物車的內容。你可以爲此使用一個SQLite數據庫。

只要購物車啓動,就會調用onCreate(),但它只會在Home中調用一次。

但真正的事情是,你甚至不應該有那個按鈕從購物車回家。這可能是iOS上的一些事情,但在Android上,我們有Back按鈕,用戶知道它,使用它,並且不需要在屏幕上覆制此按鈕。

1

爲了解決您的問題,您必須瞭解活動生命週期,以及哪些活動生命週期方法在從一個活動切換到另一個活動時被調用。

enter image description here