Contenido sobre Android
Buscar
Social
Ofertas laborales ES

Foro sobre Android > Mostrar ProgressDialog

Hola que tal, estoy intentando mostrar un progress bar y para ello he creado un método:

private void runDialog(final int seconds)
{
dialog = ProgressDialog.show(this, "Please wait....", "Here your message");
new Thread(new Runnable(){
public void run(){
try {
Thread.sleep(seconds * 1000);
dialog.dismiss();
} catch (InterruptedException e) { }
}
}).start();
}

LLamo al método dentro de onCreate(), pero no me lo muestra por pantalla, alguien sabe porque puede ser, seguro que estoy haciendo algo mal. >_<.
Gracias.

octubre 18, 2011 | Unregistered Commenterdamarsan

con ProgressDialog.show(Main.this, "Please wait....", "Here your message"); te tendría que mostrar el dialogo. No te da ningún tipo de error? A mi tu mismo código me está funcionando.

octubre 18, 2011 | Registered Commenterjordibr7

Hola, olvídate del Thread, usa un AsyncTask para eso y SystemClock, te quedará mucho mejor, con los Threads hay problemas al trabajar con la GUI de Android, luego te busco un código que utilizo y funciona bastante bien.

Saludos
--droid86

octubre 18, 2011 | Unregistered Commenteranonymous

Bueno te lo paso ya (esto te puede servir como ejemplo), con el Thread como tengas que mostrar un componente de vista no veas la que se lía:

public class asyncTaskUpdateProgress extends AsyncTask<Void, Integer, Void> {
int progress;

@Override
protected void onPostExecute(Void result) {
progressBar.setProgress(100);
Log.d(logTag, "Trabajo completado ");
Toast.makeText(getApplicationContext(), getString(R.string.toast_voicemail_send_to) + " " + correo, Toast.LENGTH_LONG).show();
correoET.setText("");
asuntoET.setText("");
fileName = null;
progressBar.setVisibility(View.INVISIBLE);
}

@Override
protected void onPreExecute() {
progressBar.setVisibility(View.VISIBLE);
}

@Override
protected void onProgressUpdate(Integer... values) {
progressBar.setProgress(values[0]);
}

@Override
protected Void doInBackground(Void... arg0) {

// aquí todo lo que quieras hacer
}

De verdad que es una chulada lo del asynctask, también están los service pero para este caso el asynctask me gusta más.

Luego para marcar el progreso solo tienes que colocar 'progressBar.setProgress(values[0]);' donde quieras y el values[0] lo cambias por el número que necesites, 10, 20, 30, 40....

Y por último en un listener para el botón le añades esto y ya:
new asyncTaskUpdateProgress().execute();


Saludos

octubre 18, 2011 | Unregistered Commenteranonymous

Muchas gracias, funciona perfecto.

octubre 19, 2011 | Registered Commenterdamarsan