Noob pregunta sobre "Hello World" tutorial de Android

Recién empezando con el desarrollo de Android y Java. Así que, aquí está el código con el que estoy trabajando:

package com.example.helloandroid; import android.app.Activity; import android.os.Bundle; public class HelloAndroidActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } 

¿Cuál es el propósito de declarar el método onCreate () aquí:

 public void onCreate(Bundle savedInstanceState) { 

Luego, utilizando super para llamar al método onCreate () aquí:

 super.onCreate(savedInstanceState); 

¿No significa esto que está llamando al método onCreate () de la clase Activity en lugar de la clase HelloAndroidActivity? Si es así, ¿cuál es el punto de declarar un método con el mismo nombre en la clase HelloAndroidActivity?

Gracias por cualquier aclaración.

onCreate es una especie de su función main(String[] args) en Java normal. Es donde se configura el código.

En su ejemplo, HelloAndroidActivity es una clase que hereda de Activity . A continuación, está onCreate método onCreate la clase base ( Activity ). La sustitución se produce cuando define un método en una clase derivada con la misma firma que un método existente en la clase base. Esto significa que cuando llamo onCreate en una instancia de HelloAndroidActivity , ejecutaré la versión HelloAndroidActivity y no la versión de la clase base ( Activity ).

La instrucción super.OnCreate(savedInstanceState) en la versión super.OnCreate(savedInstanceState) está llamando explícitamente a la versión de la clase base del método. Lo que esto significa es que desea HelloAndroidActivity.onCreate para ejecutar primero la implementación de la clase base, y luego ejecutar más código.


Tomemos los siguientes ejemplos para ilustrar este comportamiento (supongamos que el método Output sólo produce algo en la pantalla):

1.

 class A { public void DoSomething() { Output("A"); } } 

En este caso, llamar A.DoSomething() producirá "A".


2.

Supongamos que todavía tenemos la clase A definida como arriba, y lo siguiente:

 class B extends A { } 

En este caso, llamar a B.DoSomething() también mostrará "A".


3.

Supongamos que todavía tenemos la clase A definida como arriba, y lo siguiente en su lugar:

 class B extends A { @Override public void DoSomething() { Output("B"); } } 

Ahora, llamar a B.DoSomething() producirá "B".


4.

Supongamos que todavía tenemos la clase A definida como arriba, y ahora esta vez:

 class B extends A { @Override public void DoSomething() { super.DoSomething(); Output("B"); } } 

Ahora, al llamar B.DoSomething() saldrá "A" y luego "B".

Está creando una clase que hereda de Activity ; Pero tienes que definir su comportamiento, así que le dices a tu clase, cuando se crea, que llame a la clase base para completar todas las cosas que deben hacerse ( super.onCreate() ), entonces configura tu presentación para mostrar tu pantalla / aplicación setContentView() ).

Una cosa más: echa un vistazo a @Override definido antes de public void onCreate(Bundle savedInstanceState) : override significa que estás extendiendo el método base para permitir que tu clase derivada haga todo el trabajo de la base, incluyendo (después) tu lógica .

Pregunta: ¿Cuál es el propósito de declarar el método onCreate () aquí? Respuesta: El método oncreate () es análogo a main (String args []) en ususal JAVA. La actividad oncreate se llama cuando empieza tu Actividad. Así que todas las inicializaciones deben hacerse en este método.

Escribes : public class HelloAndroidActivity extends Actividad Esto significa que estás creando una clase – "HelloAndroidClass" que hereda de class = "Activity".

Usted escribe: super.onCreate (savedInstanceState); Java utiliza la palabra clave "super" para llamar a los constructores de la clase padre. Estás usando el concepto de anular aquí. Cuando se ejecuta el código, se ejecuta el método oncreate de la clase base "HelloAndroidActivity" y no el de la clase padre – "Clase de actividad".

Así que el código primero ejecutará la implementación de la clase base del método oncreate () (super.oncreate (…)) y luego la implementación de la clase derivada.

Pregunta: ¿Cuál es el punto de declarar un método con el mismo nombre en la clase HelloAndroidActivity? Respuesta: La palabra clave super se está utilizando para inicializar los objetos. El punto en redeclaring el mismo método y utilizando overiding es que se guarda de reescribir el código de la clase base.

De la documentación para el método onCreate:

Las clases derivadas deben llamar a través de la implementación de este método. Si no lo hacen, se lanzará una excepción.

Vea más aquí para conocer los métodos de actividad, el ciclo de vida, etc.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.