2009-12-30 9 views
27

¿Hay un diálogo estándar "Cargando, espere" que puedo usar en el desarrollo de Android, cuando invoco algunos AsyncTask (descargando algunos datos del servicio remoto, por ejemplo)?Android - Cargando, espere

Respuesta

72

¿Quiere decir algo así como un indeterminado ProgressDialog?

Editar: es decir

ProgressDialog dialog = ProgressDialog.show(context, "Loading", "Please wait...", true); 

continuación, llamar dialog.dismiss() cuando haya terminado.

+0

FYI, esta clase está desfasada y en nivel 26. sugerido alternativas API son https://developer.android.com/reference/android/widget/ProgressBar.html y https : //developer.a ndroid.com/guide/topics/ui/notifiers/notifications.html. –

10

Mirko es básicamente correcto, sin embargo, hay dos cosas a tener en cuenta:

  1. ProgressDialog.show() es un acceso directo que crea automáticamente un cuadro de diálogo. A diferencia de otros cuadros de diálogo, NO debe usarse en onCreateDialog(), ya que causará errores en Android 1.5.

  2. Existen otros problemas con los cambios de orientación de la pantalla AsyncTask + ProgressDialog + de los que debe tener conocimiento: check this out.

+0

gracias por la lista de cosas a tener en cuenta! y, por cierto, lindo icono de Braid que tienes allí :) – kape123

19

Si implementa ejecutable, así como la ampliación de la actividad entonces se podría manejar el código como este ...

private ProgressDialog pDialog; 

public void downloadData() { 
    pDialog = ProgressDialog.show(this, "Downloading Data..", "Please wait", true,false); 
    Thread thread = new Thread(this); 
    thread.start(); 
} 

public void run() { 
// add downloading code here 
    handler.sendEmptyMessage(0); 
} 

private Handler handler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     pDialog().dismiss(); 
     // handle the result here 
    } 
}; 

Vale la pena mencionar que se puede establecer la vista del contenido del diálogo de progreso para que puede mostrar un mensaje personalizado/imagen :)

pDialog.setContentView(R.layout.X); 
Cuestiones relacionadas