Guardar objeto mientras cambia la orientación
Cómo guardar objetos mientras cambia la orientación, ya que onRetainNonConfigurationInstance y getLastNonConfigurationInstance están obsoletos. Y que no me puede utilizar con el compatibility package
android-support-v4.jar
FragmentActivity
, donde se muestra Cannot override the final method from FragmentActivity
Sitio del desarrollador
- Poner una vista de texto encima de un fragmento de lista
- ¿Cómo agregar un fragmento a un diseño generado mediante programa?
- No se puede realizar esta acción dentro de onLoadFinished
- Alcance el diseño de la tableta de android gmail en la selección (estilo de la flecha)
- ViewPager dentro de ScrollView - el desplazamiento vertical no funciona
Utilice la nueva Fragment API setRetainInstance (boolean) en su lugar;
Pero no sé cómo guardar un objeto personalizado mediante setRetainInstance
Mi escenario:
En mi actividad tengo un AsyncTask con diálogo de progreso. Aquí necesito manejar el cambio de orientación.
Para eso recibí una muy buena respuesta de Mark Murphy, CommonsWare
Background-task-progress-dialog-orientation-change-is-there-any-100-working ,
Con proyecto de ejemplo
Ya que estoy usando el paquete de compatibilidad android-support-v4.jar, FragmentActivity
, no puedo anular onRetainNonConfigurationInstance
No se puede anular el método final de FragmentActivity
¿Hay algún método alternativo para guardar mi objeto personalizado?
EDIT: No puedo hacer mi AsyncTask tarea Parcelable (Si no estoy equivocado), ya que el uso de la interfaz, el contexto, etc Mi AsyncTask
public class CommonAsyncTask extends AsyncTask<Object, Object, Object> { Context context; AsyncTaskServices callerObject; ProgressDialog progressDialog; String dialogMessag ; ................
Estoy buscando, ¿hay alguna alternativa para el método onRetainNonConfigurationInstance , que guardan un objeto completamente mientras que el cambio de orientación y más tarde se puede recuperar utilizando getLastNonConfigurationInstance
- LocationListener en el fragmento
- ¿Debe un novato olvidarse de los fragmentos?
- cómo establecer la fecha en la biblioteca android WeekView?
- Android FragmentTabHost - ¿Todavía no está completamente horneado?
- ¿Por qué ViewPager genera errores en el modo de diseño de Android Studio?
- El fragmento del explorador de código de barras de Zxing se bloquea después de unos minutos
- Cómo llamar o aparecer fragmento al hacer clic en el botón
- ¿Cómo aplastar fragmentos en el backstack que coinciden con su etiqueta de fragmento?
Hay dos alternativas:
- Utilice un
Loader
. ElFragmentActivity
se encargará de guardar / restaurar su estado al volver a crear. - Utilice un fragmento sin una vista y llame a
setRetainInstance(true)
. Hay un ejemplo de esto en la fuente de la biblioteca de compatibilidad, FragmentRetainInstanceSupport o algo así.
Puede utilizar onRetainCustomNonConfigurationInstance.
Utilice esto en lugar de onRetainNonConfigurationInstance (). Recupere más adelante con getLastCustomNonConfigurationInstance ().
Cuando su Fragmento se detiene llamará a este método:
@Override public void onSaveInstanceState(Bundle outState) { // Add variable to outState here super.onSaveInstanceState(outState); }
La variable outState
se alimentará entonces en el método onCreate () cuando el Fragmento se reinicie.
Puede guardar cualquier dato que sea de tipo básico o implementar la interfaz Parcelable
Bueno, cita de Android Developers' References
:
Este método se llama después de onStart () cuando la actividad se está reinicializando desde un estado previamente guardado, dado aquí en savedInstanceState. La mayoría de las implementaciones simplemente usarán onCreate (Bundle) para restaurar su estado, pero a veces es conveniente hacerlo aquí después de que se haya realizado toda la inicialización o para permitir que las subclases decidan si utilizar la implementación predeterminada. La implementación predeterminada de este método realiza una restauración de cualquier estado de vista que previamente había sido congelado por onSaveInstanceState (Bundle).
Respecto al uso de onSaveInstanceState()
, es mejor revertir sus objetos / cosas usando onRestoreInstanceState()
.
Consulte Actividad # onRestoreInstanceState ()
- Arraylist de clasificación de Android por propiedades
- ¿Dónde detener / destruir subprocesos en la clase de servicio de Android?