Skip to content

Most visited

Recently visited

navigation

Iniciar otra activity

Después de completar la lección anterior, 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 3.0.

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.myfirstapp > 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 Attributes, 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. En concreto, el método debe declarar lo siguiente:

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 es un objeto que proporciona enlace de tiempo de ejecución entre componentes separados, como dos activity. El Intent 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);
        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 final:

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():

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 Configure 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:

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 (luego debe habilitarse, como se muestra en la figura 1).
  3. En la ventana Pallete, haz clic en Text y luego 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. La opción “Autoconnect” agrega restricciones a la derecha y a la izquierda 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 figura 1.

Como alternativa, puedes realizar algunas modificaciones en el estilo de texto expandiendo textAppearance en la ventana Attributes y cambiar atributos como textSize y textColor.

Mostrar el mensaje

A continuación, modificará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 = 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 final:
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    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.

Lo único que debes hacer es declarar la activity primaria lógica en el archivo AndroidManifest.xml. 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"
          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 actividades.

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.

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience. (Dec 2017 Android Platform & Tools Survey)