Android: Dialog de progreso no girando

Este parece ser un problema para todo Android, que se puede ver en las demostraciones de API en Vistas -> Barra de progreso -> Diálogos.

Básicamente, si muestra un diálogo de progreso, funciona como se esperaba la primera vez. Si lo descarta y lo muestra de nuevo (sin destruir la actividad o algo así), la imagen giratoria deja de girar. En la demostración API puede ver esto haciendo clic en "Mostrar indeterminado", presionando atrás para cerrar el cuadro de diálogo y haciendo clic de nuevo en el botón.

He tratado de construir mi propio diálogo de progreso, sin embargo, muestra el mismo problema, ya que el problema es con la "ProgressBar" imagen giratoria.

Me pregunto si alguien tiene una solución para este problema.

    Si descarta un Dialog , no debe volver a mostrar la misma instancia. Crea uno nuevo o usa hide() lugar de dismiss() . Cuando use hide() todavía tiene que dismiss() cuando ya no sea necesario.

    No es necesario utilizar onCreateDialog para objetos ProgressDialog , como se explica aquí http://developer.android.com/guide/topics/ui/dialogs.html#ProgressDialog . Debe crear y mostrar el diálogo de progreso en el código principal en lugar de usar showDialog y onCreateDialog .

    Estaba buscando la misma respuesta, sin embargo ninguna de las respuestas aquí funcionó para mí porque quería usar los métodos de diálogo de Activity.showDialog() como Activity.showDialog() así que no tuve que administrarlos yo mismo y también para que se recrearan automáticamente En una rotación.

    Al igual que algunas de las otras respuestas, dijo, si dismiss () se llama a un ProgressDialog que dejará de girar. Activity.onCreateDialog() guarda una referencia al cuadro de diálogo, por lo que una vez creada no se volverá a crear en la siguiente llamada Activity.showDialog() . Simplemente llamará a Activity.onPrepareDialog() y usará la instancia que ya tenía. Si fue despedido entonces no girará cuando se muestra otra vez.

    Puede obligarlo a volver a crear si llama a Activity.removeDialog() con el ID de ProgressDialog lugar de llamar a Dialog.dismiss() . Esto lo descartará y también quitará esa referencia, así que cuando se llama a Activity.onCreateDialog() usará Activity.onCreateDialog() lugar de sólo Activity.onPrepareDialog() y creará una instancia nueva (e hilada).

    Asegúrese de que si tiene un ProgressDialog que se puede descartar o cancelar, establece un listener para que pueda llamar a Activity.removeDialog() . De lo contrario sólo será despedido. También puede llamarla antes de llamar a Activity.showDialog() .

    Espero que ayude a alguien.

    Puede declarar una instancia ProgressDialog en su Actividad y reemplazar onCreateDialog(int) . Entonces en vez de hacer una llamada a showDialog(int) usted apenas asigna su instancia de ProgressDialog la llamada a onCreateDialog(int) donde usted llamará dialog.show() .

     public class Home extends Activity { ProgressDialog recordingDialog; //where you want to call the dialog recordingDialog = (ProgressDialog)onCreateDialog(RECORDING_DIALOG_KEY); @Override protected Dialog onCreateDialog(int id) { ProgressDialog dialog = new ProgressDialog(this); switch (id) { case RECORDING_DIALOG_KEY: ((ProgressDialog) dialog).setIndeterminate(true); dialog.setCancelable(false); ((ProgressDialog) dialog) .setProgressStyle(ProgressDialog.STYLE_SPINNER); dialog.setMessage("Recording..."); dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Stop", dialogStopListener); dialog.show(); break; default: dialog = null; } return dialog; } } 

    Puede definir la clase e implementar el AsyncTask.There definir sus procesos de fondo en el método doinbackground () como este.

      @Override protected String doInBackground(String... params) { publishProgress(new Integer(1)); for(int i=0;i<=300;i++){ System.out.println(i); } publishProgress(new Integer(1)); for(int i=301;i<=600;i++){ System.out.println(i); } ................. .................... ........................... //your background tasks publishProgress(new Integer(1)); for(int i=601;i<=900;i++){ System.out.println(i); } pd.dismiss();//dismiss the progress dialog here... return null; } 

    También puede mostrar su información de progreso por el método onProgressUpdate (). Revise un tutorial completo fácil de seguir en http://www.androidcookers.co.cc/2011/12/want-to-run-progress-dialog-in- Android.html

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.