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 15/05/12, 21:35:20
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
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
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
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
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
no te entendi , no podrias e4xplicarmelo con un ejemplo ???
Responder Con Cita
  #4  
Viejo 16/05/12, 18:09:55
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
ya ya me quedo muchas gracias....
Responder Con Cita
  #5  
Viejo 16/05/12, 18:25:02
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
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
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
¿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
Avatar de gohan0189
gohan0189 gohan0189 no está en línea
Miembro del foro
Mensajes: 190
 
Fecha de registro: feb 2012
Mensajes: 190
Tu operador: TELCEL
Mencionado: 0 comentarios
Tagged: 0 hilos
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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

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: 05:59:45 (GMT +1)

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