Android View onSaveInstanceState no se llama

Estoy trabajando con CustomView que extiende algunas vistas de Android como FrameLayout. En mi diseño, utilizo un ViewPager con un PagerAdapter personalizado.

El problema es que mi vista no restauró su estado cuando el fragmento se vuelve a conectar a ViewPager / Activity. Por ejemplo, tengo tres fragmentos, si paso a la última y vuelvo a la primera, el ScrollView no es donde lo dejé: está de vuelta al valor predeterminado, en la parte superior.

Sé que con un PagerAdapter, no todos los fragmentos están activos en el mismo tiempo, básicamente el juste + 1 / -1.

No puedo encontrar porqué mi View.onSaveInstanceState () no se llama, tan como onRestoreInstanceState.

La respuesta fácil: es porque no estaba fijando el id a mi opinión (costumbre o no). Android no administró el onSaveInstanceState/onRestoreInstanceState si no se ha configurado ningún identificador en la vista.

Así como mi customView estaba extendiendo la vista base, sin propiedad adicional, establecer una ID para la vista resolvió el problema y por lo que onSaveInstanceState / onRestoreInstanceState se llaman como debería.

Así que para resumir, utilice uno de este enfoque:

Desde XML

 <ScrollView android:layout_width="match_parent" android:layout_height="wrap_content" ... android:id="@+id/scrollView"> </ScrollView> 

O desde Java

 yourCustomView.setId(R.id.myCustomView); 

Es el último caso, se agrega id estático a res / values ​​/ ids.xml <item name="myCustomView" type="id"/>

Guardar el estado por defecto

Ahora tenemos todo en su lugar para nuestra visión de salvar y restaurar su estado. Sin embargo, esto no sucederá por defecto. Si desea instancias de su vista para guardar el estado automáticamente, puede agregar esta línea al método init:

 setSaveEnabled(true); 

Si o no hacer esto depende de usted. Incluso si su vista no guarda el estado de forma predeterminada, los usuarios de la vista siempre pueden habilitar el estado de ahorro llamando a setSaveEnabled (true) o especificando android: saveEnabled = "true" en el layout xml.

  • Implicado Z-Ordenando Para ViewPagers
  • ¿Cómo podemos trabajar en torno al título en blanco en PagerTitleStrip y PagerTabStrip?
  • Fragmento de actualización de ViewPager en el dispositivo
  • Implemente el cajón deslizante con el visor donde se encuentra el cajón deslizante en el visor
  • Android - ¿Cómo puedo localizar el indicador de pestañas entre las dos pestañas TextViews?
  • ¿Existe una manera de crear un control deslizante de vista previa en android
  • ViewPager.setOffscreenPageLimit (0) no funciona como se esperaba
  • Mostrando imágenes con efecto carrusel en android
  • Galería: Efecto en el elemento seleccionado
  • Sincronizar la altura de la barra de herramientas con ViewPager
  • No se puede emitir a la clase ViewPager personalizada
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.