sábado, 25 de abril de 2015

Pasando Datos Usando Objetos Intent en Android


Para este tutorial usaremos la estructura que maneje en un tutorial anterior. Aquí la liga


Una vez revizado esto tendremos que hacer algunas modificaciones a los archivos para poder realizar este tutorial.

1.- Modificaremos el archivo segundomain.xml.

segundomain.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
        >

<TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Esta es la segunda activity"
        />

    <Button
            android:id="@+id/btn_ActivityMain"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Regresar al ActivityMain"
            android:onClick="onClick"
            />

</LinearLayout>



2.- Tambien modificaremos el archivo Activity2.java para agregar la nueva funcionalidad

Activity2.java

package kenny.master.kenny;

import android.app.Activity;
import android.os.Bundle;

//librerias para este ejemplo
import android.content.Intent;
import android.net.Uri;
import android.view.View;
import android.widget.Toast;


public class Activity2 extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //Agregamos el archivo xml de la segundomain
        setContentView(R.layout.segundomain);

        //Obtener los datos pasados de tipo string usando getStringExtra()
        Toast.makeText(this, getIntent().getStringExtra("str1"),
                Toast.LENGTH_SHORT).show();

        //Obtener el objeto Bundle
        Bundle bundle = getIntent().getExtras();

        //obtenemos los datos de tipo string usando getString()
        Toast.makeText(this, bundle.getString("str2"),
                Toast.LENGTH_SHORT).show();
    }

    //Creo mi evento onClick
    public void onClick(View v )
    {
        //Usamos un objeto intent para regresar los datos
        Intent intent = new Intent();

        //Usamos el metodo setData() para regresar algun valor
        intent.setData(Uri.parse("Aqui casual programando en Android"));

        //Establece el resultado con OK y le paso mi intent
        setResult(RESULT_OK, intent);

        //Cierro la activity
        finish();
    }

}


3.- Modificaremos el MyActivity.java para agregar la nueva funcionalidad.

MyActivity.java

package kenny.master.kenny;

import android.app.Activity;
import android.os.Bundle;

//librerias a utilizar
import android.content.Intent;
import android.view.View;
import android.widget.Toast;

public class MyActivity extends Activity {

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

    //Creamos nuestros evento onClick
    public void onClick( View v )
    {
        Intent intent = new Intent("kenny.master.Activity2");

        //Uso putExtra() para agregar valores
        intent.putExtra("str1", "Yo soy el depredador1220");

        //Uso un objeto bundle para agregar valores
        Bundle extras = new Bundle();
        extras.putString("str2", "Apoyame dando clic a la publicidad");

        //Adjunto el objeto bundle  dentro del intent
        intent.putExtras(extras);

        //comienza la activity a obtener el resultado
        startActivityForResult(intent, 1);
    }

    //Si la peticion que pedimos fue correcta, entonces mostrara el dato de la anterior activy
    //y la mostrara en esta activy
    public void onActivityResult( int requestCode, int resultCode, Intent data)
    {
        if( requestCode == 1 )
        {
            if(resultCode == RESULT_OK )
            {
                //obtenemos el resultado usando getData()
                Toast.makeText(this, data.getData().toString(),
                        Toast.LENGTH_SHORT).show();
            }
        }
    }
}




4.- Los archivos main.xml y Manifest.xml se mantendran igual.





No hay comentarios:

Publicar un comentario