PDA

Ver la Versión Completa : Ayuda al pasar datos de una activity a otra


victorzs93
22/12/13, 21:47:46
Hola buenas, soy nuevo en este foro, estoy empezando a programar en android y tengo que hacer un ejercicio en el que una parte de la aplicacion es una ventana con una valoracion numerica, y esta valoracion la tengo que recoger en el activity principal para mandarlo a otra activity que me muestra la media de las valoraciones, ademas de mostrar el total de valoraciones en el activity principal, pero al realizar la valoracion y pulsar en aceptar la aplicacion se queda colgada y se cierra y no soy capaz de encontrar el fallo, a ver si alguno puede echarme una mano, gracias.

Este es el codigo que llama al activity donde realizo la valoracion:
Código :

valorar.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, ValorarActivity.class);
startActivityForResult(intent, 3);
}
});



Este seria el codigo recogido en el activity valorar cuando pulso en aceptar:
Código :

((Button)findViewById(R.id .bAceptarVer)).setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
Intent data = new Intent();
EditText valoracion = (EditText) findViewById(R.id.valoracion);
int suma = Integer.parseInt( valoracion.getText().toString());

data.putExtra("suma", suma);
setResult(RESULT_OK);
finish();
}
});



Y este seria el codigo donde recojo la valoracion en el activity principal:
Código :

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if((resultCode==RESULT_OK) && (requestCode== 3)){
numValoraciones++;
sumaValoraciones += Integer.parseInt(data.getStringExtra("suma"));
}

}


El log del error seria el siguiente:
01-04 12:58:32.509: E/AndroidRuntime(8641): FATAL EXCEPTION: main
01-04 12:58:32.509: E/AndroidRuntime(8641): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=3, result=-1, data=null} to activity {com.example.pdm02/com.example.pdm02.MainActivity}: java.lang.NullPointerException
01-04 12:58:32.509: E/AndroidRuntime(8641): at android.app.ActivityThread.deliverResults(Activity Thread.java:2544)
01-04 12:58:32.509: E/AndroidRuntime(8641): at android.app.ActivityThread.handleSendResult(Activi tyThread.java:2586)
01-04 12:58:32.509: E/AndroidRuntime(8641): at android.app.ActivityThread.access$2000(ActivityThr ead.java:121)
01-04 12:58:32.509: E/AndroidRuntime(8641): at android.app.ActivityThread$H.handleMessage(Activit yThread.java:973)
01-04 12:58:32.509: E/AndroidRuntime(8641): at android.os.Handler.dispatchMessage(Handler.java:99 )
01-04 12:58:32.509: E/AndroidRuntime(8641): at android.os.Looper.loop(Looper.java:130)
01-04 12:58:32.509: E/AndroidRuntime(8641): at android.app.ActivityThread.main(ActivityThread.jav a:3768)
01-04 12:58:32.509: E/AndroidRuntime(8641): at java.lang.reflect.Method.invokeNative(Native Method)
01-04 12:58:32.509: E/AndroidRuntime(8641): at java.lang.reflect.Method.invoke(Method.java:507)
01-04 12:58:32.509: E/AndroidRuntime(8641): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:878)
01-04 12:58:32.509: E/AndroidRuntime(8641): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:636)
01-04 12:58:32.509: E/AndroidRuntime(8641): at dalvik.system.NativeStart.main(Native Method)
01-04 12:58:32.509: E/AndroidRuntime(8641): Caused by: java.lang.NullPointerException
01-04 12:58:32.509: E/AndroidRuntime(8641): at com.example.pdm02.MainActivity.onActivityResult(Ma inActivity.java:74)
01-04 12:58:32.509: E/AndroidRuntime(8641): at android.app.Activity.dispatchActivityResult(Activi ty.java:3908)
01-04 12:58:32.509: E/AndroidRuntime(8641): at android.app.ActivityThread.deliverResults(Activity Thread.java:2540)
01-04 12:58:32.509: E/AndroidRuntime(8641): ... 11 more

neoadn
22/12/13, 22:33:21
El error está en MainActivity.class en la linea 74, es lo que causa el error.

01-04 12:58:32.509: E/AndroidRuntime(8641): at com.example.pdm02.MainActivity.onActivityResult(Ma inActivity.java:74)

He intentado leer un poco lo que intentas hacer pero no lo entiendo.

Si posteas que linea es la 74 podemos empezar por algo.

Y no se, me da la sensación de que tu app trabajará con muchos datos, si es así a lo mejor te sale mejor usar Base de datos sqlite, y si solo es un dato, puedes trabajar con el usando el sharedpreferences. Así podrás acceder a esos datos desde cualquier activity sin problema.

kriogeN
22/12/13, 23:02:50
Estás devolviendo un Integer, como se ve aquí:

int suma = Integer.parseInt( valoracion.getText().toString());
data.putExtra("suma", suma);

Y estás leyendo un String, como se ve aquí:

sumaValoraciones += Integer.parseInt(data.getStringExtra("suma"));

La solución, la que prefieras, o enviar un String o recoger un Integer, dado tu caso creo que lo mejor es recoger el Integer directamente.

EDITO:

Me he parado a mirar eso y ni siquiera me había fijado en que no estás devolviendo NADA, porque el data no lo asignas en el setResult, cambia esto:

setResult(RESULT_OK);

Por esto:

setResult(RESULT_OK, data);

victorzs93
22/12/13, 23:56:13
Muchisimas gracias, vaya despiste jajajaja era lo que dices, no me fije que no estaba devolviendo nada, tenia que poner el data. Despiestes del inicio, gracias me estaba volviendo loco y lo obvie jajajajaja