2013-08-30 33 views
8

我無法將繼承的概念應用於Android活動 - 例如, ActivityA extends ActivityActivityB extends ActivityA,那麼如果我使用ActivityB啓動然後onCreate()方法活動(A然後B)被調用。Android中的活動之間的繼承關係

我的問題是,在典型的Java中,來自ActvityA的onCreate應該被覆蓋 - 但onCreate相當於作爲構造函數行事,即使它是一個函數。繼承在Android中如何工作,尤其是其他功能像onPause(),onResume等?

編輯:我也注意到ActivityA可能有很多抽象方法在onCreate()中調用,其定義在ActivityB中提供。這個怎麼用 ?

+0

是的,這是可能的 –

+0

'特別是。關於其他國家職能?'請定義這個句子。我不明白。 –

+0

+1爲好問題。 – MKJParekh

回答

6

如果你有你的基地的活動,然後擴展它像這樣Activity - >Activity A這意味着當你的Activity A的onCreate被調用,調用super.onCreate();那麼原來ActivityonCreate()方法也被稱爲。

如果再擴展到Activity AActivity B來電工作是這樣的...

Activity B.onCreate() - super.onCreate(); - >Activity A.onCreate() - super.onCreate() - >Activity.onCreate()

它不是一個構造函數,它的一個方法叫做創建Activities。如果你從其他Activities擴展他們的超類將被稱爲通過其super方法。這並不意味着你繼承的Activities也將被創建。 Activity B將成爲您創建的Activity

在Android Developer網站上編輯:This page非常有用,因爲它直觀地解釋了Android Activity生命週期。

+1

我還想指出,'onCreate'代替構造函數的原因是在方向改變時,不應該重建對象。 –

+0

啊..我怎麼錯過super.onCreate()非常感謝,你能不能解釋一下抽象方法是如何工作的(我已經編輯了這個問題) – AndroidLearnMachine

+0

@AndroidLearnMachine你在說什麼方法? – StuStirling

1

是的,因爲一個典型的java函數onCreate應該被繼承,但它不會得到:爲什麼? - 因爲它不僅僅是一種方法,而是一個生命週期階段。 AFAIK,Activity不僅僅是一個java類,它是一個特殊類型的JAVA類,它擁有自己的生命週期,生命週期階段意味着每當你使用那個類/活動時被調用,即使你已經聲明或不是這些方法onCreate(),onPause()等被肯定調用。

所以每次基本活動都會被創建和銷燬。這就是天性。

如果你有問題,你可以嘗試使用抽象類,接口和任何其他公共類,以在所有活動中繼承公共代碼。