Ver la Versión Completa : [ CONSULTA ] Solucionar error en dialog al mostar datos de dasedata
FartBomb
01/04/12, 20:39:53
hola os dejo aquí el código del dialog a ver si vosotros podeis ver los errores, se queda el dialog procesando todo el rato, ese es el error, pero no se como solucionarlo:
ProgressDialog Esperar;
Esperar=new ProgressDialog(MapaActivity.this);
Esperar.setMessage("Cargando Datos...");
Esperar.show();
Esperar.setIndeterminate(true);
cargandodatos();
public void cargandodatos ()
{
Runnable runnable=new Runnable() {
public void run() {
// TODO Auto-generated method stub
puntos=obtenerListaDeLocations();
handler.sendEmptyMessage(0);//Decir que el hilo termino
}
Handler handler = new Handler()
{
private void handlermessa(Message message) {
// TODO Auto-generated method stub
for(int i=0;i<puntos.size();i++)
{
capa.add(puntos.get(i));
}
Esperar.hide();
}
};
};
new Thread(runnable).start();//
}
monchyrcg
02/04/12, 11:16:43
Se esta cargando constantemente porque no cierras nunca el progress dialog. En algún momento dentro del handler tienes que poner esperar.dismiss(); yo creo que lo debes sustituir por esperar.hide();
Prueba y comenta!!!
FartBomb
02/04/12, 12:39:16
nada , se sigue quedando trabado todo el rato.
kriogeN
02/04/12, 13:18:04
Esto:
private void handlermessa(Message message)
Cambialo por esto:
public void handleMessage (Message message)
Si aún así sigue sin funcionar, cambia esto:
handler.sendEmptyMessage(0);
Por esto:
handler.sendMessage(null);
monchyrcg
02/04/12, 13:26:47
Un ejemplo echo por mi, mi clase hereda de MapActivity y hereda de Runnable , te pongo el ejemplo y ya esta:
public class PruebaMapa extends MapActivity implements Runnable{
......................
..............
........................
.......................
......
.....
private void comunidadSeleccionada(String modoParsear){
if(esComunidad){
comunidad= modoParsear;
if(comunidad.equals("TODAS"))
todas = true;
else
todas = false;
}
else if(esZona)
zona = modoParsear;
pd = ProgressDialog.show(this,"Cargando...","Recuperando datos", true, true);
Thread thread = new Thread(this);
thread.start();
}
/*
* Aquí es donde compruebo las variables para llamar al parseador. Me ayudo de un runnable para
* hacerlo en segundo plano y que sea más comodo para el usuario
* @see java.lang.Runnable#run()
*/
public void run() {
Looper.prepare();
if(esZona){
listaDeSitios = parseador.parse(null, zona);
if(listaDeSitios.isEmpty()){
handler.sendEmptyMessage(0);
mapView.postInvalidate();
controler.animateTo(calcularCoordenadas(listaDeSit ios.get(0).getCiudad()));
Toast.makeText(getApplicationContext(), "Zona no encontrada", Toast.LENGTH_SHORT).show();
}else{
crearPuntos();
controler.setZoom(7);
handler.sendEmptyMessage(0);
}
}
else if(esComunidad){
if(todas){
listaDeSitios = parseador.parse();
crearPuntos();
mapView.postInvalidate();
handler.sendEmptyMessage(0);
Toast.makeText(getApplicationContext(), listaDeSitios.size()+" zonas encontradas", Toast.LENGTH_SHORT).show();
}
else{
listaDeSitios = parseador.parse(comunidad,null);
if(listaDeSitios.isEmpty()){
handler.sendEmptyMessage(0);
Toast.makeText(getApplicationContext(), "Ninguna zona en esta comunidad", Toast.LENGTH_SHORT).show();
}
else{
crearPuntos();
mapView.postInvalidate();
controler.animateTo(calcularCoordenadas(listaDeSit ios.get(0).getComunidad()));
handler.sendEmptyMessage(0);
Toast.makeText(getApplicationContext(), listaDeSitios.size()+" zonas encontradas", Toast.LENGTH_SHORT).show();
}
}
}
Looper.loop();
Looper.myLooper().quit();
}
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
pd.dismiss();
}
};
}
En el método comunidad sleccionada creo el progress dialog e inicio el hilo. En el método run se realiza en segundo plano y cuando acabo llamo al metdo sendEmptyMessage igual que haces tu. Echale un ojo a ver si te sirve. Un saludo
FartBomb
02/04/12, 14:22:51
sii ya m funciono muchas gracias era solamente cambiar el private por public , gracias y un saludo
vBulletin® v3.8.1, Copyright ©2000-2026, Jelsoft Enterprises Ltd.