Ich habe Probleme, das Vererbungskonzept auf Android-Aktivitäten anzuwenden - z.
ActivityA extends Activity
und
ActivityB extends ActivityA
, wenn ich dann mit ActivityB starte, dann wird onCreate () Methode für beide Aktivitäten (A, dann B) aufgerufen.
Meine Frage ist, dass in typischen Java onCreate from ActivityA überschrieben werden sollte - aber onCreate verhält sich eher wie ein Konstruktor, obwohl es eine Funktion ist. Wie funktioniert die Vererbung in Android, insb. mit anderen Funktionen wie onPause (), onResume usw.?
EDIT: Ich habe auch bemerkt, dass ActivityA viele abstrakte Methoden haben kann, die in onCreate () aufgerufen werden, deren Definitionen in ActivityB zur Verfügung gestellt werden. Wie funktioniert das?
Wenn Sie Ihre Basisaktivität haben und diese dann so erweitern wie Activity
- & gt; Activity A
bedeutet, dass wenn Ihre onCreate von Activity A
aufgerufen wird und Sie super.onCreate();
aufrufen, wird auch die onCreate()
Methode der ursprünglichen Activity
aufgerufen.
Wenn Sie Activity A
auf Activity B
erweitern, funktionieren die Aufrufe wie folgt ...
Activity B.onCreate()
- super.onCreate();
- & gt; Activity A.onCreate()
- super.onCreate()
- & gt; Activity.onCreate()
.
Es ist kein Konstruktor, es ist eine Methode, die aufgerufen wird, um Activities
zu erstellen. Wenn Sie sie dann von anderen Activities
erweitern, wird ihre Oberklasse über ihre super
-Methode aufgerufen. Es bedeutet nicht, dass die Activities
, von denen Sie geerbt haben, ebenfalls erstellt werden. Activity B
wird Ihre erstellte Activity
sein.
BEARBEITEN Diese Seite auf dem Android-Entwickler Die Website ist sehr nützlich, da sie den Android Activity-Lebenszyklus visuell erklärt.
Ja, eine typische Java-Funktion von onCreate sollte vererbt sein, aber nicht bekommen: warum? - Weil es nicht nur eine Methode ist, sondern eine Lebenszyklusphase.
AFAIK, Activity ist nicht nur eine Java-Klasse, sondern ein spezieller Typ einer JAVA-Klasse, die ihren eigenen Lebenszyklus hat und deren Lebenszyklusphasen immer dann aufgerufen werden sollen, wenn Sie diese Klasse / Aktivität verwenden deklariert oder nicht diese Methoden onCreate (), onPause () usw. wird sicher aufgerufen.
Also jedes Mal, wenn die Basisaktivität erstellt und zerstört wird. Das ist es Natur.
Wenn Sie Probleme damit haben, können Sie versuchen, abstrakte Klassen, Interfaces und jede andere öffentliche Klasse zu verwenden, damit der gemeinsame Code in allen Ihren Aktivitäten übernommen wird.
Tags und Links android inheritance android-activity