Veamos cómo abrir un Activity en Android y cómo pasar un dato de tipo String reutilizandolo en su interfaz de usuario.
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.
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.
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:
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:
Lo hacemos cuando escribimos implements View.OnClickListener
btn = (Button) findViewById(R.id.buttonMain);
btn.setOnClickListener(this);
private final String MSNG = “Hola desde aqui”;
@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: