Abrir un Activity en Android pasando datos

Abrir un Activity en Android pasando datos

Veamos cómo abrir un Activity en Android y cómo pasar un dato de tipo String reutilizandolo en su interfaz de usuario.

Intents en Android

Una forma de abrir un activity en Android es realizando un Intent. De acuerdo con la documentación de Android, un Intent en Android es un objeto que se utiliza para solicitar una acción de otro componente de la aplicación. Existen Intents para comenzar un actividad (un Activity representa una única pantalla en una aplicación), para iniciar un servicio (un Service es un componente que realiza operaciones en segundo plano), y para entregar un mensaje (un mensaje es un aviso que cualquier aplicación puede recibir).

Existen dos tipos de Intents: explícitos e implícitos.

Intent explícito con datos

Un Intent explícito especifica qué componente debe iniciar usando su nombre de clase.

Veamos cómo abrir un segundo Activity y cómo pasarle un dato a este segundo Activity.

Abrir un Activity en Android pasando datos

Para este ejercicio deberá tener dos Activity: MainActivity.java y SecondActivity.java.

Tenemos el siguiente botón en  activity_main.xml

<Button
     android:id="@+id/buttonMain"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="Go Next"
     android:textColor="#fff"
     android:background="#e91e63"
     tools:layout_editor_absoluteX="0dp"
     tools:layout_editor_absoluteY="447dp"
     android:layout_alignParentBottom= "true"
 />

Observe que su id es buttonMain, su texto es Go Next, el color del texto es blanco y el color de fondo es rosa. 

Y tenemos el siguiente TextView en activity_second.xml

<TextView
      android:id="@+id/textViewMain"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text=""
      tools:layout_editor_absoluteX="130dp"
      tools:layout_editor_absoluteY="228dp" />

Observe que su id es textViewMain y no contiene ningún texto.

Entonces en nuestro Mainactivity.java realizaremos lo siguiente:

  1. Implementar View.OnClickListener
  2. Detectar cuándo fue pulsado el botón
  3. Declarar una variable String
  4. Si el botón es pulsado abrir SecondActivity, enviando el dato String.

En nuestro SecondActivity.java realizaremos lo siguiente:

5. Recibir el dato String

6. Mostrarlo en un TextView

 

El código de mi MainActivity.java queda de esta manera:

Lo que hicimos fue lo siguiente:

  1. Implementar View.OnClickListener

Lo hacemos cuando escribimos implements View.OnClickListener

  1. Detectar cuándo fue pulsado el botón. Lo realiza la siguiente parte del código:

btn = (Button) findViewById(R.id.buttonMain);

btn.setOnClickListener(this);

  1. Declarar una variable String

private final String MSNG = “Hola desde aqui”;

  1. Si el botón es pulsado abrir SecondActivity, enviando el dato String.

  @Override

    public void onClick(View view){

        Intent intent = new Intent(MainActivity.this, SecondActivity.class);

        intent.putExtra(“msng”, MSNG);

        startActivity(intent);

    }

Notamos que es un Intent explícito pues especificamos abiertamente quién es el elemento que envía y quién es le que recibe. La variable String MSNG la enviamos usando la función putExtra.

El código de mi SecondActivity.java queda así:

package com.example.gibgarcia.practica4;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class SecondActivity extends AppCompatActivity {
    private TextView textview;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        textview = (TextView) findViewById(R.id.textViewMain);
        Bundle bundle = getIntent().getExtras();
        if (bundle != null){
            String msng = bundle.getString("msng");
            textview.setText(msng);
        }
        else{
            Toast.makeText(SecondActivity.this, "Esta vacio", Toast.LENGTH_LONG).show();
        }
    }
}

Lo que hicimos fue lo siguiente:

5. Recibir el dato String

6. Mostrarlo en un TextView

Bundle bundle = getIntent().getExtras();

        if (bundle != null){

            String msng = bundle.getString(“msng”);

            textview.setText(msng);

        }

Utilizamos un objeto Bundle para obtener los datos enviados, lo extraemos y lo mostramos en un TextView

En caso de que no estuviesemos recibiendo datos, mostrará un mensaje indicando que “Está vacío”. 

El resultado es el siguiente:

Abrir un Activity en Android

Abrir un Activity en Android

Referencias

  1. Android.com (2018). Intents y filtros de intents. Disponible en [https://developer.android.com/guide/components/intents-filters?hl=es-419]
¿Qué te pareció este artículo?
  • Poco informativo 
  • No era lo que buscaba 
  • Regular 
  • Interesante 
  • Excelente 
(Visto 1.505 veces)
Facebooktwitterlinkedinmail

Tu comentario

opiniones

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *







− 3 = 1