viernes, 24 de abril de 2015

Obteniendo datos de otro Activity en Android

Para este ejemplo sera necesario usar la misma estructura que manejamos en este tutorial

ir al tutorial

Una vez que completamos los intents y nos movemos por ventanas ahora necesitaremos recuperar los datos que se encuentran en un Activity y poderlo mostrar en otro activity para ello realizaremos cambios en algunos de los archivos que utilizamos en el anterior tutorial para poder realizarlo con exito.

1.- Primero modificaremos el segundomain.xml para agregarle un texto y podramos capturarlo y depues mostrarlo en otro Activity.

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"
        />

    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Introduce tu poderoso nombre:"
            />

    <EditText
            android:id="@+id/nombre"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            />

    <Button
            android:id="@+id/btn_OK"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Aceptar"
            android:onClick="onClick"
            />

</LinearLayout>



2.- Lo siguiente sera modificar el Activity2.java para poder agregarle la nueva funcionalidad que necesitara para pasar los datos.

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.EditText;


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 );
    }

    //Creo mi evento onClick
    public void onClick(View v )
    {
        Intent data = new Intent();

        //Obtengo el valor del editText
        EditText nombre = (EditText) findViewById(R.id.nombre);

        //Establesco los datos para poderlos pasar.
        data.setData(Uri.parse(nombre.getText().toString()));

        setResult(RESULT_OK, data);

        //Cierro la activity
        finish();
    }

}

3.- Finalmente modificaremos el MyActivity.java para mostrar los datos introducidos y recuperados del anterior activity que es Activity2 y mostrar el resultado.

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 {

    //una bandera que nos servira para verificar que estamos mandando bien el uri
    int request_code = 1;

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

    //Creamos nuestros evento onClick
    public void onClick( View v )
    {
        //le pasaremos el intent y codigo de respuesta
        startActivityForResult(new Intent("kenny.master.Activity2"), request_code);
    }

    //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 == request_code )
        {
            if(resultCode == RESULT_OK )
            {
                Toast.makeText(this, data.getData().toString(), Toast.LENGTH_SHORT).show();
            }
        }
    }
}







No hay comentarios:

Publicar un comentario