Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 22/12/13, 21:47:46
Array

[xs_avatar]
victorzs93 victorzs93 no está en línea
Usuario novato en la web
 
Fecha de registro: dic 2013
Mensajes: 2
Tu operador: Movistar

Ayuda al pasar datos de una activity a otra

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 :
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 :
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 :
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
Responder Con Cita


  #2  
Viejo 22/12/13, 22:33:21
Array

[xs_avatar]
neoadn neoadn no está en línea
Usuario muy activo
 
Fecha de registro: abr 2010
Localización: Orense
Mensajes: 632
Modelo de smartphone: Redmi Note 4
Tu operador: Movistar
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.
__________________
Responder Con Cita
  #3  
Viejo 22/12/13, 23:02:50
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
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);

Última edición por kriogeN Día 22/12/13 a las 23:06:24.
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 22/12/13, 23:56:13
Array

[xs_avatar]
victorzs93 victorzs93 no está en línea
Usuario novato en la web
 
Fecha de registro: dic 2013
Mensajes: 2
Tu operador: Movistar

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
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 13:07:06 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /