android - example - progressdialog deprecated alternative
¿Cómo lidiar con el cambio de orientación con un ProgressDialog que muestra? (6)
Estoy mostrando un ProgressDialog
en el método onPreExecute
de un objeto AsyncTask y estoy cancelando el ProgressDialog en el método onPostExecute
. En el método doInBackground
, estoy realizando una solicitud HTTP para el registro de usuarios. Deseo permitir cambios en la orientación de la pantalla. Cuando cambio la orientación mientras el método doInBackground
todavía se está ejecutando, recibo todo tipo de errores divertidos, como ''IllegalArgumentException: vista no adjunta al administrador de ventanas'' y ''RegisterScreen ha filtrado la ventana ...''
¿Cómo puedo continuar mostrando correctamente el ProgressDialog
después de un cambio de orientación? O tal vez, ¿cómo puedo desactivar el cambio de orientación después de que el usuario solicite enviar su registro?
Agregue esto en la etiqueta de actividad en la aplicación manifest.xml
<activity android:label="@string/app_name" android:configChanges="keyboardHidden|orientation|screenSize" android:name=".your.package"/>
Desea manejar adecuadamente el ciclo de vida de la actividad, lo que significa guardar y restaurar el estado de su actividad, sin intentar evitar cambios en el ciclo de vida. Lea un poco sobre AsyncTask vs. el ciclo de vida de la actividad.
Por ejemplo: pause-and-resume-asynctasks-android y what-to-do-with-asynctask-in-onpause .
En mi caso he utilizado.
android:configChanges="orientation"
pero no me funcionó
Lo siguiente está funcionando bien
<activity android:name=".MyActivity"
android:configChanges="orientation|screenSize|screenLayout">
</activity>
Intente agregar este atributo android:configChanges="orientation"
a su elemento de Activity
en el archivo AndroidManifest.xml
.
Puede intentar desactivar los cambios de orientación durante el tiempo que muestra el ProgressDialog
.
al principio haz:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
y habilitar de nuevo después de la finalización:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
Espero que esto ayude.
(Si alguien tiene una solución adecuada, también me interesaría :-)
Puedes usar el siguiente código en tu Manifiesto
<activity android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden"
android:name=".your.package">