PDA

Ver la Versión Completa : Mostrar info retornada en otra pagina o activity


kakashi20
08/07/14, 04:45:32
Hola

Hice este código para enviar variables a un archivo. Php dando url y esta insterta la variable en una bd mysql.

Cuando finaliza el proceso, muestra un mensaje a través del "Toast", que dice que inserto correctamente y limpia los EditText.

El problema es que como haría para que cuando se ejecute con el botón, este inserte los datos y me lleve a otra pagina o activity y mostrar los resultado que obtengo dle archivo .php ?

Nota: use AsyncTask para enviar las variables al archivo .php

Les agradecería sus comentario y ayuda. Estoy aprendiendo este nuevo lenguaje.

Gracias



package com.example.pruebaenviarvariables;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity ;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;

import com.example.pruebaenviarvariables.R;

public class MainActivity extends Activity {

private EditText dni;
private EditText nombre;
private EditText telefono;
private EditText email;
private Button insertar;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENT ATION_SENSOR_PORTRAIT);
setContentView(R.layout.fragment_main);


nombre = (EditText) findViewById(R.id.nombre);
dni=(EditText)findViewById(R.id.dni);
telefono=(EditText)findViewById(R.id.telefono);
email=(EditText)findViewById(R.id.email);
//Insertamos los datos de la persona.
insertar=(Button)findViewById(R.id.insertar);

Log.v("Insertar value ", "= "+insertar);

insertar.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

new Insertar(MainActivity.this).execute();

}

});

}

//Inserta los datos de las Personas en el servidor.
private boolean insertar(){
HttpClient httpclient;
List<NameValuePair> nameValuePairs;
HttpPost httppost;
httpclient=new DefaultHttpClient();
httppost= new HttpPost("xxxxx.insert.php"); // Url del Servidor
//Añadimos nuestros datos
nameValuePairs = new ArrayList<NameValuePair>(4);
nameValuePairs.add(new BasicNameValuePair("dni",dni.getText().toString().trim()));
nameValuePairs.add(new BasicNameValuePair("nombre",nombre.getText().toString().trim()));
nameValuePairs.add(new BasicNameValuePair("telefono",telefono.getText().toString().trim()));
nameValuePairs.add(new BasicNameValuePair("email",email.getText().toString().trim()));

try {
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httpclient.execute(httppost);
return true;
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
//AsyncTask para insertar Personas
class Insertar extends AsyncTask<Void,String,Boolean>{

private Activity context;

Insertar(Activity context){
this.context=context;
}
@Override
protected Boolean doInBackground(Void... params) {
// TODO Auto-generated method stub
insertar();

return true;
}


@Override
protected void onPostExecute(Boolean result) {
if(result)
Toast.makeText(context, "Persona insertada con éxito", Toast.LENGTH_LONG).show();
nombre.setText("");
dni.setText("");
telefono.setText("");
email.setText("");
}
}
}

Arasthel
08/07/14, 20:44:45
Lee los datos del HttpResponse que devuelve:
HttpResponse response = httpclient.execute(httppost);
InputStream stream = response.getEntity().getContent();


Con un Scanner, un BufferedReader o similares.

Almacena esos datos como quieras, como un objeto, un String, etc. Luego, cuando vayas a usar startActivity(Intent), a ese Intent debes añadirle un los datos:

Intent intent = new Intent(this, NuevaActivity.class);
intent.putExtra("resultado", variableResultado);
startActivity(intent);
Y para recuperarlo, en la nueva Activity:

public void onCreate(...) {
...
Tipo resultado = getIntent().getExtras().get*Tipo*("resultado");
...
}

Siendo *Tipo* el tipo de la variable que metieras (String, Int, Boolean...). Si quieres pasar un objeto complejo lo mejor es que uses Parcelable y que lo cojas en el nuevo Activity con un getParcelable. Más info de esto lo tienes aquí (http://androcode.es/2012/12/trabajando-con-parcelables/).

Espero que te sirva.

Un saludo.

kakashi20
09/07/14, 03:39:31
Gracias. Me sirvió de mucho