![]() |
|
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 |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
||||
|
||||
Problema en AsyncTask en doInBackground
Buenos, quería añadir a mi aplicación un ProgressDialog mientras se realiza una función (que lo que hace es leer los datos de dos páginas php). El caso es que la función que se encarga de leer los datos de php funcionan perfectamente, pero a la hora de meterlo en la clase AsyncTask que he creado, cuando ejecuto la aplicación me da error en la función doInBackground, es decir que la función de leer los datos de php que se tendría que hacer en segundo plano, mientras se ejecuta me da error.
Os dejo el código a ver si veis algún fallo, ya que yo estoy empezando en estoy y ando un poco verde. Esta es la clase que depende de AsyncTask Código:
class asynclogin extends AsyncTask < Void, Void, Void >{ protected void onPreExecute() { //para el progress dialog pDialog = new ProgressDialog(User.this); pDialog.setMessage("Cargando datos..."); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.show(); } @Override protected Void doInBackground(Void... params) { // TODO Auto-generated method stub View v = null; leerdatos(v); //El código de esta función lo he puesto abajo. return null; } /*Una vez terminado doInBackground segun lo que halla ocurrido pasamos a la sig. activity o mostramos error*/ protected void onPostExecute(String result) { pDialog.dismiss();//ocultamos progess dialog. Log.e("onPostExecute=",""+result); } } } //----------------------------------------------------------------------- Código:
public void leerdatos (View v) { Leer leernoti = new Leer(); String txtnoti = leernoti.post("urlnoti"); TextView tnoti = (TextView)findViewById(R.id.textNoti); tnoti.setText(txtnoti); Leer leersaldo = new Leer(); String txtsaldo = leersaldo.post("urlconta"); TextView tsaldo = (TextView)findViewById(R.id.textConta); tsaldo.setText(txtsaldo); } Última edición por EPDPF Día 22/11/13 a las 11:32:34 |
|
#2
|
||||
|
||||
Varias cosas:
1) El problema lo más probable es que esté en el método post de la clase Leer, pero como no has puesto el código no podemos saberlo. De todas formas debería indicartelo en el LogCat. 2) No puedes hacer un setText dentro de un método al que se llame desde onBackground, en este caso, en leerdatos. Ya que estás actualizando una vista desde un hilo que no es el principal. No es que no puedas, es que no debes, porque lo que va a ocurrir es que no se va a actualizar. Pero si es impepinable hacerlo ahí al final del método hazle un postInvalidate() a los 2 TextView. O ejecuta el setText dentro de un runOnUIThread. 3) El doInBackground debería devolver un String, porque es el parámetro que tiene como entrada el onPostExecute, y nunca tendría que devolver NULL, porque ese parámetro lo estás usando en el Log del onPostExecute. Resuelve el 2 y el 3 a ver si así se arregla, pero sigo pensando que el problema está en el 1. Y una cosa tonta, ¿Por qué le pasas una View a leerdatos si después no la usas? |
Gracias de parte de: | ||
#3
|
||||
|
||||
Cita:
![]() Muchas gracias de nuevo tio ![]() |
#4
|
||||
|
||||
Solucionado he ejecuta el setText dentro de un runOnUIThread, y ya me funciona.
Muchas gracias compañero ![]() |
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 21:44:44 (GMT +2)
HTCMania: líderes desde el 2007