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.
- ¿Cómo puedo enviarBroadcast (intención) de myDialog y recibir en myActivity?
- Al mostrar el cuadro de diálogo obtengo "No se puede realizar esta acción después de onSaveInstanceState"
- Cómo detectar la visibilidad del selector de método de entrada sin el permiso de accesibilidad
- Iniciar el bloqueo de diálogos en servicio
- El método showDialog (int) del tipo Actividad está obsoleto en android?
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.
- Cambiar el color del botón en AlertDialog
- No se puede resolver el método 'show (android.support.v4.app.FragmentManager, java.lang.String)
- Cómo cerrar un cuadro de diálogo en Android mediante programación?
- Diálogo de alerta personalizada no centrado verticalmente en Android
- Evitar que el diálogo de actividad de Android se cierre en el exterior
- Cómo centralizar el diseño dentro de Android Dialog?
- Diálogo de progreso de Android
- Inicio del cuadro de diálogo del servicio
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
- Abra la aplicación google maps desde un navegador con la ubicación de inicio predeterminada en android y iphone
- Android Views: ¿puede comprobar la visibilidad antes de configurar la visibilidad y mejorar el rendimiento?