0% encontró este documento útil (0 votos)
68 vistas6 páginas

Manejo de onCreate en Android Studio

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
68 vistas6 páginas

Manejo de onCreate en Android Studio

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Android Developers

Iniciar otra activity

En esta lección, aprenderás a:

Responder al botón Send


Crear una intent
Crear la segunda activity
Agregar una vista de texto
Mostrar el mensaje
Agregar navegación superior

Después de completar la lección anterior (https://developer.android.com/training/basics/ rstapp/building-ui.html),


tendrás una app que mostrará una activity (una única pantalla) con un campo de texto y un botón. En
esta lección, agregarás a MainActivity un fragmento de código que iniciará una nueva activity para
mostrar el mensaje cuando el usuario toque Send.

Nota: En esta lección, se presupone que usas Android Studio 2.3 o versiones posteriores.

Responder al botón Send


Agrega un método en MainActivity.java al cual llame el botón de la siguiente manera:

1. En el archivo app > java > com.example.my rstapp > MainActivity.java, agrega el código auxiliar del método
sendMessage() como se muestra a continuación:

public class MainActivity extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

/** Called when the user taps the Send button */


public void sendMessage(View view) {
// Do something in response to button
}
}
Es posible que veas un error, ya que Android Studio no puede resolver la clase View que se usa como argumento del
método. Por lo tanto, haz clic para posicionar tu cursor en la declaración View y luego realiza una corrección rápida
presionando Alt + Enter (en Mac, Option + Enter). (Si aparece un menú, selecciona Import class).

2. Regresa al archivo activity_main.xml para llamar a este método desde el botón:

1. Haz clic para seleccionar el botón en el editor de diseño.

2. En la ventana Properties, encuentra la propiedad onClick y selecciona sendMessage [MainActivity] en la lista


desplegable.

Ahora, cuando se presione el botón, el sistema llamará al método sendMessage().

Toma nota de los detalles de este método que se requieren para que el sistema lo reconozca como compatible con el
atributo android:onClick (https://developer.android.com/reference/android/view/View.html#attr_android:onClick). En concreto, el
método debe declarar lo siguiente:

acceso público;

un valor de retorno vacío;

una View (https://developer.android.com/reference/android/view/View.html) como único parámetro (es el objeto View


(https://developer.android.com/reference/android/view/View.html) en el que se hizo clic).

Luego, completarás este método para leer el contenido del campo de texto y proporcionar dicho texto a otra activity.

Crear una intent


Un Intent (https://developer.android.com/reference/android/content/Intent.html) es un objeto que proporciona enlace de
tiempo de ejecución entre componentes separados, como dos activity. El Intent
(https://developer.android.com/reference/android/content/Intent.html) representa la “intención de hacer algo” de una app.
Puedes usar las intents para varias tareas, pero en esta lección tu intent inicia otra activity.

En MainActivity.java, agrega la constante EXTRA_MESSAGE y el código sendMessage(), como se muestra a


continuación:

public class MainActivity extends AppCompatActivity {


public static final String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

/** Called when the user taps the Send button */


public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
( , p y g y );
EditText editText = (EditText) findViewById(R.id.editText);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
}

Android Studio nuevamente mostrará los errores Cannot resolve symbol. Presiona Alt + Enter (en Mac, Option +
Return). Tus importaciones deben tener el siguiente aspecto nal:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

Queda un error para DisplayMessageActivity, pero no hay inconveniente; podrás corregirlo en la sección siguiente.

Esto es lo que sucede en sendMessage():

El constructor de Intent (https://developer.android.com/reference/android/content/Intent.html) toma dos parámetros:

un elemento Context (https://developer.android.com/reference/android/content/Context.html) como su primer


parámetro (se usa this porque la clase Activity (https://developer.android.com/reference/android/app/Activity.html)

es una subclase de Context (https://developer.android.com/reference/android/content/Context.html));

la Class (https://developer.android.com/reference/java/lang/Class.html) del componente de la app a la cual el sistema


debe entregar la Intent (https://developer.android.com/reference/android/content/Intent.html) (en este caso, la activity
que debe iniciarse).

El método putExtra() (https://developer.android.com/reference/android/content/Intent.html#putExtra(java.lang.String,

java.lang.String)) agrega el valor de EditText a la intent. Una Intent puede llevar tipos de datos como pares clave-
valor denominados extras. Tu clave es una constante pública EXTRA_MESSAGE porque la activity siguiente usa la clave
para obtener el valor de texto. Se recomienda de nir claves para los extras de intents usando el nombre del paquete
de tu app como pre jo. Esto garantiza que las claves sean únicas, en el caso de que tu app interactúe con otras
apps.

El método startActivity()
(https://developer.android.com/reference/android/app/Activity.html#startActivity(android.content.Intent)) inicia una
instancia de la DisplayMessageActivity especi cada por la Intent
(https://developer.android.com/reference/android/content/Intent.html). Ahora deberás crear esa clase.

Crear la segunda activity


1. En la ventana Project, haz clic con el botón secundario en la carpeta app y selecciona New > Activity > Empty
Activity.

2. En la ventana Con gure Activity, ingresa “DisplayMessageActivity” en Activity Name y haz clic en Finish (deja todas
las demás propiedades en sus valores predeterminados).

Android Studio realiza tres acciones automáticamente:

Crea el archivo DisplayMessageActivity.java.

Crea el archivo de diseño activity_display_message.xml correspondiente.

Agrega el elemento <activity> (https://developer.android.com/guide/topics/manifest/activity-element.html) obligatorio en


AndroidManifest.xml.

Si ejecutas la app y tocas el botón en la primera activity, la segunda se iniciará, pero estará vacía. Esto sucede porque
la segunda activity usa el diseño vacío proporcionado por la plantilla.

Agregar una vista de texto

Figura 1: La vista de texto centrada en la parte superior del diseño.

La activity nueva incluye un archivo de diseño en blanco, por lo que ahora agregarás una vista de texto en la que
aparecerá el mensaje.

1. Abre el archivo app > res > layout > activity_display_message.xml.

2. Haz clic en Turn On Autoconnect en la barra de herramientas.

3. Desde la ventana Pallete, arrastra un TextView hacia el diseño, ubícalo cerca de la parte superior del diseño, en un
punto cercano al centro para que se acople a la línea vertical que aparece, y luego suéltalo. La opción “Autoconnect”
agrega restricciones para ubicar la vista en el centro horizontal.

4. Crea una restricción más desde la parte superior de la vista de texto hasta la parte superior del diseño, para que
tenga el aspecto de la gura 1.

Como alternativa, puedes realizar algunas modi caciones en el estilo de texto expandiendo textAppearance en la
ventana Properties y cambiar atributos como textSize y textColor.
Mostrar el mensaje
A continuación, modi carás la segunda activity para que muestre el mensaje que pasó la primera.

1. En DisplayMessageActivity.java, agrega el siguiente código al método onCreate():

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);

// Get the Intent that started this activity and extract the string
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

// Capture the layout's TextView and set the string as its text
TextView textView = (TextView) findViewById(R.id.textView);
textView.setText(message);
}

2. Presiona Alt + Enter (en Mac, Option + Return) para importar las clases faltantes. Tus importaciones deben tener el
siguiente aspecto nal:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.TextView;

Agregar navegación superior


En cada pantalla de tu app que no sea la entrada principal (todas las pantallas que no sean la de inicio) se debe
proporcionar navegación. De esta forma, el usuario puede regresar a la pantalla primaria lógica en la jerarquía de la app
presionando el botón Up en la barra de la app (https://developer.android.com/training/appbar/index.html).

Lo único que debes hacer es declarar la activity primaria lógica en el archivo AndroidManifest.xml
(https://developer.android.com/guide/topics/manifest/manifest-intro.html). Para ello, abre el archivo en app > Manifests >
AndroidManifest.xml, ubica la etiqueta <activity> para DisplayMessageActivity y reemplázala por lo siguiente:

<activity android:name=".DisplayMessageActivity"
d id tA ti it N " M i A ti it "
android:parentActivityName=".MainActivity" >
<!-- The meta-data tag is required if you support API level 15 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>

El sistema de Android agregará automáticamente el botón Up en la barra de la app.

Ejecutar la app
Ahora ejecuta nuevamente la app haciendo clic en Apply Changes en la barra de herramientas. Cuando se abra,
escribe un mensaje en el campo de texto y toca Send para que el mensaje aparezca en la segunda activity.

Figura 2: Capturas de pantalla de ambas activity.

Eso es todo. ¡Has compilado tu primera app de Android!

Si deseas continuar aprendiendo los aspectos básicos del desarrollo de apps de Android, visita el siguiente enlace para
ir a la próxima clase.

También podría gustarte