Home Menu

Menu



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


 
Herramientas
  #1  
Viejo 22/12/13, 21:47:46
Avatar de victorzs93
victorzs93 victorzs93 no está en línea
Usuario novato en la web
Mensajes: 2
 
Fecha de registro: dic 2013
Mensajes: 2
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de neoadn
neoadn neoadn no está en línea
Usuario muy activo
Mensajes: 632
 
Fecha de registro: abr 2010
Localización: Orense
Mensajes: 632
Modelo de smartphone: Redmi Note 4
Versión de ROM: MIUI
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de victorzs93
victorzs93 victorzs93 no está en línea
Usuario novato en la web
Mensajes: 2
 
Fecha de registro: dic 2013
Mensajes: 2
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 09:21:00 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007