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 15/05/12, 21:35:20
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

ayuda progressdialog

como le hago para meter un progressdialog en lo que se cargan unos datos traidos de una BDD mediante un web service,

esto es lo que tengo pero el progressdialog me lo muestra ya que se han cargado los datos
esto va al momento de dar click a un boton
Código:
  progressDialog = new ProgressDialog(this);
        progressDialog.setTitle("Cargando datos, porfavor espere..");
        progressDialog.show();
thread.start();


SoapObject solicitud = new SoapObject(namespace, Metodo);
          ///
          solicitud.addProperty("dato", edtxtpoliza.getText().toString());
          solicitud.addProperty("dato1", edtxtinciso.getText().toString());
          ///
          SoapSerializationEnvelope envoltorio = new SoapSerializationEnvelope(SoapEnvelope.VER11);
          envoltorio.dotNet = true;
          envoltorio.setOutputSoapObject(solicitud);
          HttpTransportSE transporte = new HttpTransportSE(url);

transporte.call(accionSoap, envoltorio);               
               Object result = (Object)envoltorio.getResponse();                             
               JSONString=result.toString();                
               
               DecoderConfiguration config = new DecoderConfiguration(false, AutoValueObject.class);
               AutoValueObject auto = (AutoValueObject)deserializeJsonResponse(config, JSONString);

               
               edtxt1.setText((datoos1).toString());
               edtxt2.setText((datoos2).toString());
               edtxt3.setText((datoos3).toString());
               edtxt4.setText((datoos4).toString());
               edtxt5.setText((datoos5).toString());
               edtxt6.setText((datoos6).toString());                              
               realizado=true;
relizado en onvreate esta realizado=false;

y mi trhead lo tengo asi

Código:
  Thread thread = new Thread(){       
        @Override
        public void run()
        {   
            while(realizado==false)
            {
                try{                   
                    this.sleep(5000);
                } catch (InterruptedException ex) {
                    progressDialog.dismiss();
                }
            }       
    }
        };
este para parar el progressDialog, ahora se me ocurre que talvez necesite meter un handler????? si es asi alguien podria decirme como o que hago mal??
Responder Con Cita


  #2  
Viejo 16/05/12, 09:41:27
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
La petición de datos la haces en el hilo principal, así que el hilo que has puesto no vale para nada, porque el ProgressDialog también va en el hilo principal, y sólo se mostrará cuando el hilo principal esté libre, que coincide con la finalización de la petición de datos.

Para que funcione tendrás que meter la petición de datos en el hilo, y las líneas que actualicen la UI tendrás que meterlas en un Handler o en un runOnUiThread.
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 16/05/12, 17:06:40
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

no te entendi , no podrias e4xplicarmelo con un ejemplo ???
Responder Con Cita
  #4  
Viejo 16/05/12, 18:09:55
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

ya ya me quedo muchas gracias....
Responder Con Cita
  #5  
Viejo 16/05/12, 18:25:02
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

pero tengo una duda mi codigo quedo de la siguiente manera..

Código:
  Thread thread = new Thread(){       
        @Override
        public void run()
        {   
            while(realizado==false)
            {
                try{ 
                SoapObject solicitud = new SoapObject(namespace, Metodo);
          ///
          solicitud.addProperty("dato1", edtxt1.getText().toString());
          solicitud.addProperty("dato1", edtxt2.getText().toString());
          ///
          SoapSerializationEnvelope envoltorio = new SoapSerializationEnvelope(SoapEnvelope.VER11);
          envoltorio.dotNet = true;
          envoltorio.setOutputSoapObject(solicitud);
          HttpTransportSE transporte = new HttpTransportSE(url);
          
          try {         
               transporte.call(accionSoap, envoltorio);               
               Object result = (Object)envoltorio.getResponse();                             
               JSONString=result.toString();                
               
               DecoderConfiguration config = new DecoderConfiguration(false, AutoValueObject.class);
               auto = (AutoValueObject)deserializeJsonResponse(config, JSONString);                            
               realizado=true;
              }
                catch (Exception e)
                  {
                       Toast toast = Toast.makeText(getApplicationContext(), "No se pudo comunicar con el servidor", Toast.LENGTH_SHORT);
                       toast.show();
//                      Log.i("error","mensaje",e);
//                      e.printStackTrace();
                  }                                                                                               
                    this.sleep(5000);
                } catch (InterruptedException ex) {
                    //progressDialog.dismiss();  // es que aqui quiero checar porque no lo cierra aqui
                     Toast toast = Toast.makeText(getApplicationContext(), "No se pudo comunicar con el servidor", Toast.LENGTH_SHORT);
                     toast.show();
                }
            }   
             handler.sendEmptyMessage(0);
    }
        };
           
           final Handler handler = new Handler(){ 
     public void handleMessage(Message msg) {
          edtxt1.setText((x1).toString());
               edtxt2.setText((x2).toString());
               edtxt3.setText((x3).toString());
               edtxt4.setText((x4).toString());
               edtxt5.setText((x5).toString());
               edtxt6.setText((x6).toString()); 
               relativelayout.setVisibility(View.VISIBLE);
               btobtener.setVisibility(View.GONE);
               progressDialog.dismiss();
    }
   };
pero al correrlo en debug no veo que entre al thread pero si me da los resultados esperados, como puedo hacerle para ver el funcionamiento del thread
Responder Con Cita
  #6  
Viejo 16/05/12, 19:39:45
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
¿Qué quieres decir que no ves que entre al Thread? Ponle Log al principio y al final del Thread y así comprobarás si entra o no. Pero si te está dando resultados buenos es que si que entra.
Responder Con Cita
  #7  
Viejo 17/05/12, 01:32:57
Array

[xs_avatar]
gohan0189 gohan0189 no está en línea
Miembro del foro
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL

debug

pues es que en debug no entra, le pongo un breakpoint en la linea

SoapObject solicitud = new SoapObject(namespace, Metodo);

por ejemplo, y no entra ahi es a lo que me refiero pero si hace todo lo que debe de hacer
Responder Con Cita
Respuesta

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

Herramientas


Hora actual: 14:35:49 (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 / 邮件联系 /