Cuando hayas completado la lección anterior, tendrás una app que mostrará una actividad que consiste en una sola pantalla con un campo de texto y un botón Enviar. En esta lección, podrás agregar código a MainActivity
con el objetivo de iniciar una nueva actividad para mostrar un mensaje cuando el usuario presione el botón Enviar.
Cómo responder al botón Enviar
Sigue estos pasos para agregar un método a la clase MainActivity
que se llama al presionar el botón Enviar:
En el archivo app > java > com.example.myfirstapp > MainActivity, agrega el siguiente método auxiliar
sendMessage()
:Kotlin
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } /** Called when the user taps the Send button */ fun sendMessage(view: View) { // Do something in response to button } }
Java
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 porque Android Studio no puede resolver la clase
View
que se usa como argumento del método. Para borrar el error, haz clic en la declaraciónView
, coloca el cursor sobre ella y presiona Alt + Intro (o, en Mac, Opción + Intro) a fin de realizar una corrección rápida. Si aparece un menú, selecciona Import class.- Regresa al archivo activity_main.xml para llamar al método desde el botón, de la siguiente manera:
- Selecciona el botón en el editor de diseño.
- En la ventana Attributes, ubica la propiedad onClick y selecciona sendMessage [MainActivity] en la lista desplegable.
De esta manera, cuando se presione el botón, el sistema llamará al método
sendMessage()
.Toma nota de los detalles de este método. Son necesarios para que el sistema reconozca el método como compatible con el atributo
android:onClick
. Específicamente, el método tiene las siguientes características: - A continuación, deberás completar este método para leer el contenido del campo de texto y proporcionar dicho texto a otra actividad.
Cómo compilar un intent
Un Intent
es un objeto que proporciona vinculación en tiempo de ejecución entre componentes separados, como dos actividades. El Intent
representa la intención de realizar una tarea que tiene una app. Puedes usar los intents para varias tareas; pero, en esta lección, tu intent inicia otra actividad.
En MainActivity
, agrega la constante EXTRA_MESSAGE
y el código sendMessage()
, como se muestra a continuación:
Kotlin
const val EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE" class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } /** Called when the user taps the Send button */ fun sendMessage(view: View) { val editText = findViewById<EditText>(R.id.editText) val message = editText.text.toString() val intent = Intent(this, DisplayMessageActivity::class.java).apply { putExtra(EXTRA_MESSAGE, message) } startActivity(intent) } }
Java
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); EditText editText = (EditText) findViewById(R.id.editText); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent); } }
Puedes esperar que Android Studio vuelva a mostrar errores Cannot resolve symbol. Para borrar los errores, presiona Alt + Intro o, en Mac, Opción + Regresar. Deberías terminar con las siguientes importaciones:
Kotlin
import androidx.appcompat.app.AppCompatActivity import android.content.Intent import android.os.Bundle import android.view.View import android.widget.EditText
Java
import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.EditText;
Todavía queda un error para DisplayMessageActivity
, pero está bien. Puedes arreglarlo en la siguiente sección.
Lo que sucede en sendMessage()
es lo siguiente:
El constructor
Intent
toma dos parámetros,Context
yClass
.El parámetro
Context
se usa primero, porque la claseActivity
es una subclase deContext
.El parámetro
Class
del componente de la app, al que el sistema entrega elIntent,
, es, en este caso, la actividad que va a comenzar.El método
putExtra()
agrega el valor deEditText
al intent. UnIntent
puede transportar tipos de datos como pares clave-valor llamados extras.Tu clave es una constante pública
EXTRA_MESSAGE
porque la actividad siguiente usa la clave para obtener el valor de texto. Te recomendamos definir las claves para extras de intents con el nombre del paquete de la app como prefijo. De esta manera, se garantiza que las claves sean únicas en el caso de que tu app interactúe con otras apps.- El método
startActivity()
inicia una instancia deDisplayMessageActivity
que especifica elIntent
. Luego, deberás crear esa clase.
Cómo crear la segunda actividad
Para crear la segunda actividad, sigue estos pasos:
- En la ventana Project, haz clic con el botón derecho en la carpeta de la app y selecciona New > Activity > Empty Activity.
- En la ventana Configure Activity, ingresa "DisplayMessageActivity" en Activity Name. Deja todas las demás propiedades con sus valores predeterminados y haz clic en Finish.
Android Studio realiza tres acciones automáticamente:
- Crea el archivo
DisplayMessageActivity
. - Crea el archivo de diseño
activity_display_message.xml
, que se corresponde con el archivoDisplayMessageActivity
. - Agrega el elemento
<activity>
correspondiente enAndroidManifest.xml
.
Si ejecutas la app y presionas el botón en la primera actividad, se iniciará la segunda, pero estará vacía porque usa el diseño vacío proporcionado por la plantilla.
Cómo agregar una vista de texto

La nueva actividad incluye un archivo de diseño en blanco. Sigue estos pasos para agregar una vista de texto al lugar donde aparece el mensaje:
- Abre el archivo app > res > diseño > activity_display_message.xml.
- Haz clic en Enable Autoconnection to Parent
en la barra de herramientas De esta manera, se habilita la conexión automática. Consulta la figura 1.
- En el panel Palette, haz clic en Text, arrastra un elemento TextView al diseño y suéltalo cerca de la parte central superior del diseño de manera que se acople a la línea vertical que aparecerá. La opción de conexión automática agrega restricciones a la derecha y a la izquierda para ubicar la vista en el centro horizontal.
- Crea una restricción más desde la parte superior de la vista de texto hasta la parte superior del diseño para que se vea como en la figura 1.
De manera opcional, puedes realizar algunos ajustes en el estilo de texto si expandes textAppearance en el panel Common Attributes de la ventana Attributes y cambias los atributos como textSize y textColor.
Cómo mostrar el mensaje
En este paso, puedes modificar la segunda actividad para mostrar el mensaje que pasó la primera actividad.
En
DisplayMessageActivity
, agrega el siguiente código al métodoonCreate()
:Kotlin
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_display_message) // Get the Intent that started this activity and extract the string val message = intent.getStringExtra(EXTRA_MESSAGE) // Capture the layout's TextView and set the string as its text val textView = findViewById<TextView>(R.id.textView).apply { text = message } }
Java
@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 = findViewById(R.id.textView); textView.setText(message); }
Presiona Alt + Intro o, en Mac, Opción + Regresar para importar estas otras clases necesarias:
Kotlin
import androidx.appcompat.app.AppCompatActivity import android.content.Intent import android.os.Bundle import android.widget.TextView
Java
import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.widget.TextView;
Cómo agregar navegación ascendente
En cada pantalla de tu app que no sea el punto de entrada principal, es decir, todas las pantallas que no sean la "pantalla principal", se debe proporcionar navegación para que el usuario pueda regresar a la pantalla superior lógica en la jerarquía de la app. Para ello, agrega un botón Arriba en la barra de la app.
Para agregar un botón Arriba, debes declarar qué actividad es la lógica principal en el archivo AndroidManifest.xml
.
Abre el archivo en app > manifests > AndroidManifest.xml, busca la etiqueta <activity>
para DisplayMessageActivity
y reemplázala con lo siguiente:
<activity android:name=".DisplayMessageActivity" 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 Android agregará automáticamente el botón Arriba en la barra de app.
Cómo ejecutar la app
Haz clic en Apply Changes , en la barra de herramientas, para ejecutar la app. Cuando se abra, escribe un mensaje en el campo de texto y presiona Send para que el mensaje aparezca en la segunda actividad.

Eso es todo. Compilaste tu primera app para Android.
Si quieres continuar aprendiendo los conceptos básicos sobre el desarrollo de apps para Android, regresa a Cómo compilar tu primera app y sigue los otros vínculos que se proporcionan allí.